给你一个长度为 n
的整数数组,每次操作将会使 n - 1
个元素增加 1
。返回让数组所有元素相等的最小操作次数。
分析:
为了使得每次操作会使得n-1个元素增加1,最终使得所有元素相等
》》》 也就相当于,每次操作使得1个元素减少1,最终使得所有的元素相等
》》》 即减小到等于最小的那个数为止
class Solution {
public:
int minMoves(vector<int>& nums) {
int res = 0;
int min_num = nums[0];
for(auto &num:nums){
min_num = min(min_num,num);
}
for(auto &num:nums){
res+=num-min_num;
}
return res;
}
};
首先随便选定一个值为最小值,然后使用for范围遍历数组,比较得出最小值
再次遍历,累加出每个元素减小到最小值的操作次数
选出数组的最小值或者最大值,可以使用STL的min_element和max_element函数,返回的是迭代器,需要解引用
int min_num = *min_element(nums.begin(),nums.end());//min_element和max_element