1. 程式人生 > >【Leetcode】453. 最小移動次數使陣列元素相等

【Leetcode】453. 最小移動次數使陣列元素相等

題目描述:

給定一個長度為 n 的非空整數陣列,找到讓陣列所有元素相等的最小移動次數。每次移動可以使 n - 1 個元素增加 1。

示例:

輸入:
[1,2,3]

輸出:
3

解釋:
只需要3次移動(注意每次移動會增加兩個元素的值):

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

解題思路:

轉換思考,每次將陣列中的n-1個數字加1,相當於將剩餘的一個數字減1。所以只需找到陣列中的最小值,陣列中其他元素與最小值的差之後即為要移動的次數。

AC程式碼:

class Solution {
public:
    int minMoves(vector<int>& nums) 
    {
        int ret=0;
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size();i++)
        {
            ret+=(nums[i]-nums[0]);
        }
        return ret;
    }
};