使用 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 次访问

开启您的职业生涯

通过完成课程获得认证

开始
广告