力扣 453. 最小操作次数使数组元素相等(刷题笔记)

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

力扣 453. 最小操作次数使数组元素相等(刷题笔记)

分析:

为了使得每次操作会使得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

上一篇:6.1 泛型


下一篇:[课程笔记]学习网页响应式设计 - 01 - 响应式设计简介