1. 程式人生 > >leetcode 453.最小移動次數

leetcode 453.最小移動次數

題目描述:

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

思路:

n-1個元素增加1,可以認為等價於使1個元素減少1。這樣,問題就轉化成了:每次減少1,最少要多少次才能使陣列中所有元素都相等?顯然只要讓所有元素減少到與最小的那個元素相等就好了。所有減少次數之和,就是要求的結果。

int minMoves(vector<int>& nums) {
        //查詢最小元素
        int min=nums[0];
        for(int i=1;i<nums.size();i++)
            if(nums[i]<min)
                min=nums[i];
        //求和
        int ans=0;
        for(int i=0;i<nums.size();i++)
            ans+=nums[i]-min;
        return ans;
    }