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

算法日常・每日刷题--<位运算>5

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)面试题 17.19. 消失的两个数字 - 给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?以任意顺序返回这两个数字均可。示例 1:输入:[1]输出:[2,3]示例 2:输入:[2,3]输出:[1,4]提示: * nums.length <= 30000https://leetcode.cn/problems/missing-two-lcci/description/

一、题目简介

题目描述

给定一个数组nums,原本完整序列是连续整数1,2,3,...,N,现在数组中恰好缺失两个不同数字,数组长度len = N - 2。 要求:在O(N)时间复杂度、O(1)常数额外空间内,找出这两个消失的数字,返回顺序不限。

示例

  1. 输入:[1]数组长度为 1 →N = 1 + 2 = 3,完整序列[1,2,3],缺失[2,3],输出[2,3]
  2. 输入:[2,3]数组长度为 2 →N = 2 + 2 = 4,完整序列[1,2,3,4],缺失[1,4],输出[1,4]

用异或运算

异或基础性质

  1. 交换律、结合律:a ^ b ^ c = a ^ c ^ b
  2. 相同数字异或抵消:x ^ x = 0
  3. 任何数异或 0 不变:x ^ 0 = x
  4. 异或区分二进制位:a ^ b的二进制中,为 1 的位代表 a、b 该位数值不同

1.用异或运算找出两个没有出现的数字

2.用异或运算将两个数分在两组

用什么方法对其进行分组,由于这两个数是不一样的,必然会有一位是1一位是0

将那一位是1还是0,对所有的数进行分类,再将数进行按组进行异或操作,即可得到答案

class Solution { public: vector<int> missingTwo(vector<int>& nums) { //将所有数字异或在一起得到没有出现的两个数异或在一起的结果 int ret=0; for(auto e:nums) ret=ret^e; for(int i=1;i<=nums.size()+2;i++) ret=ret^i; //找到某一位唯一的位置 int diff=0; while(diff<32) { if(((ret>>diff)&1)==1) break; else diff++; } int a=0,b=0; for(auto e:nums) { if( ((e>>diff) & 1) == 1 ) { a=a^e; } else { b=b^e; } } for(int i=1;i<=nums.size()+2;i++) { if( ((i>>diff) & 1) == 1 ) { a=a^i; } else { b=b^i; } } return {a,b}; } };
http://www.jsqmd.com/news/1090850/

相关文章:

  • 告别网络依赖:实战 nf-core 生信流程的完整离线部署与配置
  • UDS诊断系列之八 安全访问(27)服务状态机深度解析
  • 全国生态系统服务评价数据集(100 + 指标)|1980–2026|多分辨率栅格|供给 / 调节 / 文化 / 支持四大类全覆盖
  • 别再走弯路!2026亲测好用的一键生成论文工具|实战版
  • 极限竞速地平线4/5全能修改器:Forza Mods AIO 新手完全指南
  • 国内大学生常用的AI论文写作软件是哪款?
  • TI评估板安全使用指南:从概念验证到产品设计的风险管控
  • 国产AI芯片大模型适配:FlagGems、o-group与FP4+FP8混合精度实战
  • OpenClaw 命令行完全指南:从入门到日常运维
  • WorkBuddy 最强 Skill 来了!智囊团三件套:GPT-5.5、Claude、DeepSeek、GLM 同时帮你干活
  • iTransformer终极指南:颠覆性时间序列预测模型完全解析
  • 鸿蒙 ArkTS 实战:Visitor Registry 从状态建模到交互闭环完整解析
  • Hot 100 --- 两两交换链表中的节点
  • 2026年最新AI写作辅助网站全攻略(含新手入门指南)
  • 市场分析化技术波特五力模型与SWOT分析应用
  • 微信聊天记录永久保存指南:本地备份与智能分析工具详解
  • React Fiber 调度器的优先级模型
  • PX4编译报错:子模块缺失的诊断与修复指南
  • 数据中心布线综合指南
  • 国产多功能高速数字化仪PXIe-7964R FPGA板卡(250M/16bit:4AI+2AO)兼容LabVIEW FPGA软件开发
  • d2s-editor:暗黑破坏神2存档编辑器的终极免费开源解决方案
  • OpenWrt IPv6配置实战:从零到一,打通家庭网络双栈访问
  • 【共创季稿事节】鸿蒙 ArkTS 布局进阶:@Reusable 可复用组件 —— 列表滚动性能优化的终极武器
  • 移动端接口参数逆向分析:从BSK参数抓包到Python算法还原
  • Python协程与异步编程实战
  • Python的__getattribute__审计
  • 默认修饰符和default修饰的方法
  • 2026年,市面上的TPU服装刻字膜生产厂家都有哪些新看点?
  • Celery Worker部署
  • 终极Chrome画中画扩展:5分钟解锁浏览器多任务处理