给你一个长度为 n 的整数数组 nums ,
返回使所有数组元素相等需要的最少移动数。
在一步操作中,你可以使数组中的一个元素加 1 或者减 1 。
解题思路:
其实问题简单化, 假设有三个人在一条线上,AC在两端,B在中间
若取中位数移动数就是C-A
如果取平均值,B如果不是平均值,那么B需要走到平均值 且 AC走的路还是C-A 总移动数为C-A+ |avg-B|
。。。
人再多的时候,多的只是两边的人,中间的ABC已经站到指定位置了,思路同上
class Solution(object):
def minMoves2(self, nums):
nums.sort()
count = 0
mid = nums[len(nums)//2]
return sum([abs(x-mid) for x in nums])