leetcode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements)

题目描述:

给定一个长度为 n非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。

示例:

输入:
    [1,2,3]

输出:
    3

解释:
    只需要3次移动(注意每次移动会增加两个元素的值):

    [1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

解法:

class Solution {
public:
    int minMoves(vector<int>& nums) {
        // add one for n-1 numbers <===> subtract one for single number
        long long min_val = nums[0];
        long long sum_val = 0;
        for(int val : nums){
            sum_val += val;
            if(val < min_val){
                min_val = val;
            }
        }
        int n = nums.size();
        return sum_val - min_val*n;
    }
};

猜你喜欢

转载自www.cnblogs.com/zhanzq/p/10592630.html
今日推荐