leetcode 453.minimum moves to equal array elements


class Solution {
public:
int minMoves(vector& nums) {
// 假设经过M次移动后,所有的数为同一个值,为X,原先数组的和为SUM,最小值为minNum,则此时有公式
// sum + M * (n - 1) = X * n;
// 而 X 其实是等于最小的那个数加了M次 X = minNum + M
// 带入化简,得到 M = sum - minNum * n;
int sum = 0;
int minNum = nums[0];
int i = 0;
while (i < nums.size()) {
sum += nums[i];
minNum = min(minNum, nums[i]);
++i;
}
return sum - minNum * nums.size();
}
};