题目 453. 最小操作次数使数组元素相等
解题思路
乍一看是不是还挺复杂的,但是你细品后发现,其实就是找最小值和各个元素之间的差,然后求和。
原理:每次n-1个数同时加一,可以等价于每次有一个数减一,因为只能做减法,所以数组最后的数只能是最小值。这样的话每个元素减去最小值并求和就是答案。c++代码如下:
class Solution {
public:
int minMoves(vector<int>& nums) {
int ans=0;
int n=nums.size();
sort(nums.begin(),nums.end());
for(int i=1;i<n;i++)
{
ans+=(nums[i]-nums[0]);
}
return ans;
}
};