453. 最小操作次数使数组元素相等

Introduction

Question: 453. 最小操作次数使数组元素相等

给定一个长度为 n非空 整数数组,每次操作将会使 n - 1 个元素增加 1。找出让数组所有元素相等的最小操作次数。

 

示例:

输入:
[1,2,3]
输出:
3
解释:
只需要3次操作(注意每次操作会增加两个元素的值):
[1,2,3]  =>  [2,3,3]  =>  [3,4,3]  =>  [4,4,4]

解法一

Analysis

每次操作会使得n-1个元素增加1,这个操作可以转换成每次操作会使得1个元素减小1,这样就很容易知道最小操作次数为sum(nums) - len(nums) * min(nums)

Implement

1
2
3
4
5
6
7
8
9
int minMoves(vector<int>& nums) {
int minE = INT_MAX;
int sum = 0;
for(auto i: nums) {
minE = min(minE, i);
sum += i;
}
return sum - minE*nums.size();
}