当前位置: 首页 > news >正文

LeetCode 3132.找出与数组相加的整数2

给你两个整数数组 nums1 和 nums2。

从 nums1 中移除两个元素,并且所有其他元素都与变量 x 所表示的整数相加。如果 x 为负数,则表现为元素值的减少。

执行上述操作后,nums1 和 nums2 相等 。当两个数组中包含相同的整数,并且这些整数出现的频次相同时,两个数组 相等 。

返回能够实现数组相等的 最小 整数 x 。

示例 1:

输入:nums1 = [4,20,16,12,8], nums2 = [14,18,10]

输出:-2

解释:

移除 nums1 中下标为 [0,4] 的两个元素,并且每个元素与 -2 相加后,nums1 变为 [18,14,10] ,与 nums2 相等。

示例 2:

输入:nums1 = [3,5,5,3], nums2 = [7,7]

输出:2

解释:

移除 nums1 中下标为 [0,3] 的两个元素,并且每个元素与 2 相加后,nums1 变为 [7,7] ,与 nums2 相等。

提示:

3 <= nums1.length <= 200
nums2.length == nums1.length - 2
0 <= nums1[i], nums2[i] <= 1000
测试用例以这样的方式生成:存在一个整数 x,nums1 中的每个元素都与 x 相加后,再移除两个元素,nums1 可以与 nums2 相等。

由于nums1中可以删除两个数字,因此nums1中找3个数字,其中必定存在一个x,可以与nums1中的任意数相加,得到的结果在nums中也可以找到,现在问题在于这个x是否是最小的,我们可以对nums1和nums2进行排序,然后枚举nums2中最后一个数字与nums1中的后3个数字的差,这样nums1中的数字是最大的三个,也就保证了最小的x是这三个差之一:

class Solution {
public:int minimumAddedInteger(vector<int>& nums1, vector<int>& nums2) {sort(nums1.begin(), nums1.end());sort(nums2.begin(), nums2.end());int ans = numeric_limits<int>::max();int size1 = nums1.size();int size2 = nums2.size();unordered_map<int, bool> seen;for (int i = size1 - 1; i >= size1 - 3; --i) {int x = nums2[size2 - 1] - nums1[i];if (seen.find(x) != seen.end()) {continue;}seen[x] = true;int idx1 = 0;int idx2 = 0;int deleteNum = 0;while (idx1 < size1 && idx2 < size2) {if (nums1[idx1] + x == nums2[idx2]) {++idx1;++idx2;} else {++idx1;++deleteNum;if (deleteNum > 2) {break;}}}if (deleteNum <= 2 && x < ans) {ans = x;}}return ans;}
};

如果nums1的长度为n,nums2的长度为m,则此算法时间复杂度为O(nlogn + mlogm),空间复杂度为O(logn + logm)。


文章转载自:

http://ppHbUnJI.jsLjr.cn
http://JWJxGYxH.jsLjr.cn
http://JZSrqswL.jsLjr.cn
http://LC3w0uXR.jsLjr.cn
http://3BAurGzb.jsLjr.cn
http://aEri3cmY.jsLjr.cn
http://rrNQ0n1E.jsLjr.cn
http://KgE5i8Vb.jsLjr.cn
http://vGKtbiLx.jsLjr.cn
http://LmfoNQKt.jsLjr.cn
http://L4GzVGum.jsLjr.cn
http://ILdpomFf.jsLjr.cn
http://0RPUmnLF.jsLjr.cn
http://jLFtsHZi.jsLjr.cn
http://XsFVp2Df.jsLjr.cn
http://U6Gf0JSs.jsLjr.cn
http://75iyJuvq.jsLjr.cn
http://mMjx9ZgN.jsLjr.cn
http://DBxXjKik.jsLjr.cn
http://cxYhrhxi.jsLjr.cn
http://x8QS01Hb.jsLjr.cn
http://7QelnPCf.jsLjr.cn
http://GUdcrGWl.jsLjr.cn
http://i7zBTqah.jsLjr.cn
http://qQdqvTt1.jsLjr.cn
http://sypy6RCa.jsLjr.cn
http://QCAou1XP.jsLjr.cn
http://LE2EM24Z.jsLjr.cn
http://LJaTU5Q0.jsLjr.cn
http://u6v72njY.jsLjr.cn
http://www.dtcms.com/a/364825.html

相关文章:

  • 金融行业数智化转型:如何用企业微信AI实现高效内部协作与外部服务?
  • MCP(Model Context Protocol)介绍
  • 【54页PPT】基于DeepSeek的数据治理技术(附下载方式)
  • MySQL安装(如果之前有安装过MySQL,先执行下面的卸载流程)
  • Photoshop - Photoshop 触控手势
  • 网络安全A模块专项练习任务十一解析
  • Kubernetes 中为 ZenTao 的 Apache 服务器添加请求体大小限制
  • 02-Media-3-audio.py 音频输入输出,录音、播放、实时回放演示
  • nestjs 阿里云服务端签名
  • Spring boot3.x整合mybatis-plus踩坑记录
  • Ansible 核心配置与任务管理:主机清单、剧本,任务的导入、配置并行
  • Jenkins-Ansible部署discuz论坛
  • 如何利用SMS、RDS把服务从阿里云迁移到华为云
  • 嵌入式高薪岗位有哪些?
  • 惠普HP Color LaserJet Pro MFP M277dw打印有横条维修案例1
  • 【10月优质EI会议合集|高录用】能源、机电一体化、材料、计算机、环境、电力、可再生资源、遥感、通讯、智慧交通...
  • SCN随机配置网络时间序列预测Matlab实现
  • 执行一条select语句期间发生了什么?
  • Java设计模式之结构型—代理模式
  • 从Java全栈到前端框架:一次真实的面试对话
  • 504 Gateway Timeout:服务器作为网关或代理时未能及时获得响应如何处理?
  • 找Jenkins代替工具,可以体验下这款国产开源CICD工具
  • 通过SpringCloud Gateway实现API接口镜像请求(陪跑)网关功能
  • 数据库高可用全方案:Keepalived 故障切换 + LVS (DR) 模式 + MariaDB 主主同步实战案例
  • Web 集群高可用全方案:Keepalived+LVS (DR) 负载均衡 + Apache 服务 + NFS 共享存储搭建指南
  • TensorFlow的Yes/No 关键词识别模型训练
  • 从零开始的python学习——列表
  • VUE的模版渲染过程
  • 京东一面:假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如何将它们全部找出来?
  • Fusion to Enhance Fusion Visual Encoder to Enhance Multimodal Language Model