文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你两个长度可能不等的整数数组 nums1 和 nums2 。
两个数组中的所有值都在 1 到 6 之间(包含 1 和 6)。

每次操作中,你可以选择 任意 数组中的任意一个整数,将它变成 1 到 6 之间 任意 的值(包含 1 和 6)。

请你返回使 nums1 中所有数的和与 nums2 中所有数的和相等最少操作次数
如果无法使两个数组的和相等,请返回 -1 。

示例 1:
输入:nums1 = [1,2,3,4,5,6], nums2 = [1,1,2,2,2,2]
输出:3
解释:你可以通过 3 次操作使 nums1 中所有数的和与 nums2 中所有数的和相等。
以下数组下标都从 0 开始。
- 将 nums2[0] 变为 6 。 nums1 = [1,2,3,4,5,6], nums2 = [6,1,2,2,2,2] 。
- 将 nums1[5] 变为 1 。 nums1 = [1,2,3,4,5,1], nums2 = [6,1,2,2,2,2] 。
- 将 nums1[2] 变为 2 。 nums1 = [1,2,2,4,5,1], nums2 = [6,1,2,2,2,2] 。示例 2:
输入:nums1 = [1,1,1,1,1,1,1], nums2 = [6]
输出:-1
解释:没有办法减少 nums1 的和或者增加 nums2 的和使二者相等。示例 3:
输入:nums1 = [6,6], nums2 = [1]
输出:3
解释:你可以通过 3 次操作使 nums1 中所有数的和与 nums2 中所有数的和相等。
以下数组下标都从 0 开始。
- 将 nums1[0] 变为 2 。 nums1 = [2,6], nums2 = [1] 。
- 将 nums1[1] 变为 2 。 nums1 = [2,2], nums2 = [1] 。
- 将 nums2[0] 变为 4 。 nums1 = [2,2], nums2 = [4] 。提示:
1 <= nums1.length, nums2.length <= 10^5
1 <= nums1[i], nums2[i] <= 6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/equal-sum-arrays-with-minimum-number-of-operations
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 排序,优先使用 sum 大的数组 能降低的最多的,或者 sum 小的数组能升高最多的
class Solution {public:int minOperations(vector<int>& nums1, vector<int>& nums2) {int len1 = nums1.size(), len2 = nums2.size();if(len1 > 6*len2 || len2 > 6*len1) return -1;sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());int s1 = accumulate(nums1.begin(), nums1.end(),0);int s2 = accumulate(nums2.begin(), nums2.end(),0);if(s1 > s2){swap(nums1, nums2);swap(s1, s2);swap(len1, len2);}// 令 s1 <= s2int ans = 0, i = 0, j = len2-1;int delta1, delta2;while(s1 < s2 && (i < len1 || j >= 0)){delta1 = i < len1 ? 6-nums1[i] : 0;delta2 = j >= 0 ? nums2[j]-1 : 0;if(i < len1 && delta1 >= delta2){s1 += delta1;i++;ans++;}else if(j >= 0 && delta2 >= delta1){s2 -= delta2;j--;ans++;}}return ans;}
};

144 ms 111 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)相关推荐

  1. 力扣(leetcode)[453. 最小操作次数使数组元素相等]我见识到了,算法的终极是数学

    > Problem: [453. 最小操作次数使数组元素相等 [TOC] # 思路 > 是我做算法做多了,我变菜了,世界的终极就是数学! # 解题方法 > 题目明确的说了,有n个数, ...

  2. 【LeetCode】453. 最小操作次数使数组元素相等

    题目链接:https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements/ 题目描述 给定一个长度为 n 的 非空 整数数 ...

  3. 【LeetCode】462. 最少移动次数使数组元素相等 II

    一.题目描述 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 二.例如 例如: 输入: [1,2,3] ...

  4. LeetCode简单题之最小操作次数使数组元素相等

    题目 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. 示例 1: 输入:nums = [1,2,3] 输出:3 解释: 只需要3次 ...

  5. 一道题,最小操作次数使数组元素相等引发的思考

    前言 最近在打卡力扣刷题,一道简单题但是感觉挺好的. 力扣453:最小操作数使数组相等. 题目描述为: 给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素 ...

  6. 453. 最小操作次数使数组元素相等

    给你一个长度为 n 的整数数组,每次操作将会使 n - 1 个元素增加 1 .返回让数组所有元素相等的最小操作次数. class Solution {public int minMoves(int[] ...

  7. leetcode453. 最小操作次数使数组元素相等(贼难的简单题)

    给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1.找出让数组所有元素相等的最小操作次数. 示例: 输入: [1,2,3] 输出: 3 解释: 只需要3次操作(注意每次 ...

  8. 力扣453.最小操作次数使数组元素相等

    题目描述 给定一个长度为 n 的 非空 整数数组,每次操作将会使 n - 1 个元素增加 1.找出让数组所有元素相等的最小操作次数. 示例 输入: [1,2,3] 输出: 3 解释 只需要3次操作(注 ...

  9. LeetCode 462. 最少移动次数使数组元素相等 II(数学)

    1. 题目 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2,3] 输出: 2 ...

最新文章

  1. 2021腾讯数字生态大会:腾讯安全聚焦安全共建,护航数字经济发展
  2. 女朋友求爱c语言程序,[转载]一个程序员写的求爱程序
  3. 聊下并发和Tomcat线程数(Updated)
  4. python32位安装
  5. ajax请求失败后重连和promiseIfy
  6. 自定义控件:视差特效
  7. mysql 备份配置文件_mySQL配置文件、备份与恢复
  8. Python | threading01 - 创建两个同时运行的子线程
  9. AptanaStudio3+PHP程序远程调试的方法和步骤
  10. PostgreSQL 获评2017 DB-Engines年度DBMS榜首
  11. JavaScript 函数replace揭秘
  12. linux 无线 扫描不到网络,在Ubuntu笔记本上搜不到无线信号的解决办法
  13. hdu 1800 字符串水题 可用字符串hash 字典树做 我用了最水的排序水过
  14. 学校计算机课怎取消红蜘蛛,谁知道怎么退出或卸载“红蜘蛛教学系统” 各位高手帮帮忙啊。。。(我们老师一讲就是一节课)...
  15. iTextSharp生成pdf文档案例
  16. 外圣内王适用于互联网行业吗?
  17. 通软终端安全管理系统V6 卸载脚本
  18. CodeForces - 3B Lorry【贪心】
  19. linux mint 搜狗 乱码,解决linux mint wine微信字体显示问题
  20. stm32wb55 flash

热门文章

  1. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析
  2. shell if多个条件判断_萌新关于Excel VBA中IF条件判断语句的一点心得体会
  3. 万能无线鼠标对码软件_400元就能买ROG无线游戏鼠标,ROG影刃2无线版使用体验...
  4. vue 鼠标点击事件_VBA代码解决方案第115讲:点击鼠标实现精准控制触发事件的VBA代码第二方案...
  5. 301缓存重定向?301 Moved Permanently (from disk cache)
  6. libSVM介绍(二)
  7. linux上安装fio教程,fio工具安装及使用
  8. java join 异常_Java:守护进程:thread.join()没有完成,当在一个线程中抛出异常时...
  9. python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注
  10. Kotlin 的 Array 转 List