LeetCode453. 最小移动次数使数组元素相等

脑筋急转弯问题,每次把n-1个数做加一操作,等价于把剩下的那个数做减一操作(因为我们只考虑所有数相对的值)。

所以,经过若干次操作之后让所有数都相等,就等价于对于所有数都减小到当前数组中最小值的减一操作的次数。

代码如下:

class Solution {
public:
    int minMoves(vector<int>& nums) {
        int minNums = *min_element(nums.begin(), nums.end());   // minNums是数组中的最小元素
        int res = 0;
        for(int i = 0; i < nums.size(); ++i) {     // nums[i]经过nums[i] - minNums次减一操作可以变为minNums
            res += (nums[i] - minNums);
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/linrj/p/13885011.html