使用 Python 求解讓陣列元素相等的最小移動次數


假設我們有一個非空整數陣列,我們必須找出使陣列元素全部相等所需的最小移動次數,其中移動是指將選定的元素增加或減少 1。因此,當陣列為 [1, 2, 3] 時,輸出應為 2,因為 1 將增加到 2,3 將減少到 2。

要解決這個問題,我們將按照如下步驟進行操作 −

  • 對陣列 nums 進行排序
  • 將計數器設定為 0
  • 對於 nums 中的 i,執行
    • counter := counter + (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

更新日期: 2020-4-28

398 次訪問

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告