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

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


空でない整数配列があるとすると、すべての配列要素を等しくするために必要な最小移動数を見つける必要があります。ここで、移動は選択した要素をインクリメントまたはデクリメントします。したがって、配列が[1、2、3]の場合、出力は2になり、1は2にインクリメントされ、3は2にデクリメントされます。

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

  • 配列番号を並べ替える
  • カウンターを0に設定
  • numsのiの場合は、
    • カウンター:=カウンター+絶対値(i – nums[numsの長さ/2])
  • リターンカウンター
例(Python)

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

class Solution:
   def minMoves2(self, nums):
      nums.sort()
      counter = 0
      for i in nums:
         counter += abs(i-nums[len(nums)//2])
      return counter
ob1 = Solution()
print(ob1.minMoves2([2,5,3,4]))

入力

[2,5,3,4]
出力
4

  1. Pythonで配列内の個別の要素をカウントする

    Pythonのリストには、重複する要素が含まれている可能性があります。リストの長さを数えると、重複する要素を含む全長が得られます。ただし、この記事では、リスト内の個別の要素または一意の要素の総数を取得する方法を説明します。 例 以下の例では、collectionsモジュールのcounter()を使用しています。このモジュールでは、Counterはハッシュ可能なオブジェクトをカウントするためのdictサブクラスです。 Counterは、要素がディクショナリキーとして格納され、それらのカウントがディクショナリ値として格納される順序付けられていないコレクションです。したがって、元のリストから、キー

  2. Bisect-Pythonの配列二分アルゴリズム

    長いリストに挿入するたびにソート操作を実行すると、プロセッサが消費する時間の点でコストがかかる場合があります。 bisectモジュールは、挿入後にリストが自動的にソートされたままになることを保証します。この目的のために、それは二分アルゴリズムを使用します。モジュールには次の機能があります: bisect_left() このメソッドは、ソートされた順序を維持するために、リスト内の特定の要素の挿入ポイントを見つけます。リストにすでに存在する場合、挿入ポイントは既存のエントリの前(左側)になります。戻り値は、list.insert()の最初のパラメーターとして使用できます。 bisect_ri