1. 程式人生 > >leetcode 453. 最小移動次數使數組元素相等(Minimum Moves to Equal Array Elements)

leetcode 453. 最小移動次數使數組元素相等(Minimum Moves to Equal Array Elements)

str tco () 描述 元素 amp itl += int

目錄

  • 題目描述:
  • 示例:
  • 解法:

題目描述:

給定一個長度為 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;
    }
};

leetcode 453. 最小移動次數使數組元素相等(Minimum Moves to Equal Array Elements)