sort之后找中位数;如果是偶数长度,则取中间两个数字的平均数,奇数长度则直接取中位数。后挨个数字-去中位数,差值做加和。
class Solution:
def minMoves2(self, nums: List[int]) -> int:
nums = sorted(nums)
if len(nums)% 2:
mid = len(nums)//2
flag = nums[mid]
else:
flag = (nums[len(nums)//2 - 1] + nums[len(nums)//2])//2
res = 0
for num in nums:
res += abs(num - flag)
return res