题目链接:https://leetcode.com/problems/minimum-moves-to-equal-array-elements/
Given a non-empty integer array of size n, find the minimum number of moves required to make all array elements equal, where a move is incrementing n - 1 elements by 1.
Example:
Input: [1,2,3] Output: 3 Explanation: Only three moves are needed (remember each move increments two elements): [1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]
思路:每次增加除某一个数之外的所有数等价与每次减小那一个数最终使得所有数相等.而第二种方法比较容易做到,所以就相当于每次把最大的数减1直到所有数和最小的数相等.
代码如下:
class Solution {
public:
int minMoves(vector<int>& nums) {
int sum = accumulate(nums.begin(), nums.end(), 0);
int Min = *min_element(nums.begin(), nums.end());
return sum - nums.size()*Min;
}
};