当前位置:   article > 正文

每日一题c++《关于最小操作次数》_c++给定一个整数 n,每次操作你能让 n的值增加1。问至少需要多少次操作

c++给定一个整数 n,每次操作你能让 n的值增加1。问至少需要多少次操作

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

示例 1:

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


常规来讲,需要把每个n-1的数字+1,然后判断是否都一致,不一致则继续最小的n-1个数+1,。逆向思维则是,每次最大的数字-1,看一共有多少次。


  1. class Solution {
  2. public:
  3. int minMoves(vector<int>& nums) {
  4. int minNum = *min_element(nums.begin(),nums.end());//寻找最小的元素
  5. int res = 0;
  6. for (int num : nums) {//遍历数组
  7. res += num - minNum;//将每个数字与最小的数字相减,进行求和
  8. }
  9. return res;
  10. }
  11. };

来源:力扣(LeetCode
链接:https://leetcode.cn/problems/minimum-moves-to-equal-array-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/390597
推荐阅读
相关标签
  

闽ICP备14008679号