Leetcode 453. Minimum Moves to Equal Array Elements

關關的刷題日記發表於2018-01-08

題目的意思是給定一個長度為n的非空陣列,每次使其中的n-1個數加1,問最少操作多少次可以使陣列中的所有數字相等。

 

思路:我們可以採用逆向思維,因為題目只要求最後使陣列中所有數字相等,並沒有說等於多少。所以每次使其中n-1個數加1,就相當於每次使陣列中的一個數減1:先找到陣列中最小的數字,然後遍歷陣列所有元素,每個數與最小數字差值之和即為所求。

class Solution {
public:
    int minMoves(vector<int>& nums) {
        int minimum=INT_MAX, re=0;
        for(int x:nums)
            minimum=min(x,minimum);
        for(int x:nums)
            re+=x-minimum;
        return re;
    }
};


相關文章