462. Minimum Moves to Equal Array Elements II

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
原文地址:https://www.cnblogs.com/bernieloveslife/p/10059556.html