题目:
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]
思路:
找到最小的一个,首先得满足最小的要和最大的一样,但是昨晚后最大的值会改变,继续加,最大的值和最小的值的差值不变,也就是求每个数与最小值之间的差的和。
class Solution {
public:
int minMoves(vector<int>& nums) {
int min = INT_MAX;
int sum = 0;
for(auto val:nums){
if(val < min) min = val;
sum+=val;
}
return sum-nums.size()*min;
}
};