C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での等しい配列要素への最小移動


サイズnの配列があるとすると、すべての配列要素を同じにするために必要な最小移動数を見つける必要があります。ここで、移動とは、n-1要素を1ずつ増やすことを意味します。

したがって、入力が[3,2,3,4]の場合、出力は4になります。

これを解決するには、次の手順に従います-

  • n:=numsのサイズ

  • nが0と同じ場合、-

    • 0を返す

  • 配列番号を並べ替える

  • ans:=0

  • 初期化i:=0の場合、i

    • ans:=ans + nums [i]-nums [0]

  • ansを返す

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minMoves(vector<int>& nums) {
      int n = nums.size();
      if (n == 0)
         return 0;
      sort(nums.begin(), nums.end());
      int ans = 0;
      for (int i = 0; i < n; i++) {
         ans += nums[i] - nums[0];
      }
      return ans;
   }
};
main(){
   Solution ob;
   vector<int> v = {3,2,3,4};
   cout << (ob.minMoves(v));
}

入力

{3,2,3,4}

出力

4

  1. C++での最小の騎士の動き

    座標が-無限大から+無限大までの無限のチェス盤があり、正方形[0、0]に騎士がいるとします。騎士は、以下に示すように、8つの可能な動きをすることができます。それぞれの動きは、基本方向に2マス、次に直交方向に1マスです。 騎士を正方形[x、y]に移動するために必要な最小ステップ数を見つける必要があります。答えが存在することが保証されています。 したがって、入力がx=5およびy=5の場合、出力は4になります。これは[0,0]→[2,1]→[4,2]→[3,4]→[のようになります。 5,5] これを解決するには、次の手順に従います- マップを定義するm Solve()とい

  2. Pythonでの等しい配列要素IIへの最小移動

    空でない整数配列があるとすると、すべての配列要素を等しくするために必要な最小移動数を見つける必要があります。ここで、移動は選択した要素をインクリメントまたはデクリメントします。したがって、配列が[1、2、3]の場合、出力は2になり、1は2にインクリメントされ、3は2にデクリメントされます。 これを解決するには、次の手順に従います- 配列番号を並べ替える カウンターを0に設定 numsのiの場合は、 カウンター:=カウンター+絶対値(i – nums[numsの長さ/2]) リターンカウンター 例(Python) 理解を深めるために、次の実装を見てみましょう- class Solut