Leetcode-462 Minimum Moves to Equal Array Elements II

#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]

题解:这道题和453感觉差不多。排序之后,从两边往中间走,最大和最小之间的差距,是一定要填补上的,不管+1 还是 -1,所以最后都等于中位数。
class Solution {
public:
    int minMoves2(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int i=0;
        int j=nums.size()-1;
        int cnt=0;
        while(i<j)
        {
            cnt+=nums[j--]-nums[i++];
        }
        return cnt;
    }
};

        

原文地址:https://www.cnblogs.com/fengxw/p/6088779.html