Given a non-empty integer array, find the minimum number of moves required to make all array elements equal, where a move is incrementing a selected element by 1 or decrementing a selected element by 1.
You may assume the array's length is at most 10,000.
Example:
Input:
[1,2,3]
Output:
2
Explanation:
Only two moves are needed (remember each move increments or decrements one element):
[1,2,3] => [2,2,3] => [2,2,2]
难度
Medium
方法
对数组排序,取中间的元素,然后求出每个元素和该元素的差值,将差值累加即为最终结果
python代码
class Solution(object):
def minMoves2(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
moves = 0
medium = len(nums)/2
for i in xrange(len(nums)):
moves += abs(nums[i]-nums[medium])
return moves
assert Solution().minMoves2([1,2,3]) == 2