题目: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.
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]
题解:找到最小的值,将所有的和加上来-n*min();j
这里解释一下:因为肯定是加最小的,不然每个数加一没有意义。
令k = n*min();
剩余就有(n-1)*k,刚好加k次就行了
class Solution {
public:
int minMoves(vector<int>& nums) {
//在博客上
if(nums.size() <= 1)
return 0;
int mn = nums[0];
int sums = nums[0];
for(int i=1;i<nums.size();i++)
{
mn = min(nums[i],mn);
sums += nums[i];
}
return sums - mn*nums.size();
}
};