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]
Accepted
30,412
Submissions
58,513
class Solution:
def minMoves2(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
if len(nums)//2==len(nums)/2:
t1,t2 = nums[len(nums)//2-1],nums[len(nums)//2]
res1,res2 = 0,0
for i in nums:
res1 += abs(i-t1)
res2 += abs(i-t2)
return min(res1,res2)
else:
t = nums[len(nums)//2]
res = 0
for i in nums:
res += abs(i-t)
return res