位运算:消失的两个数字

题目描述:

给定一个数组,包含从 1 到 N 所有的整数,但其中缺了两个数字。你能在 O(N) 时间内只用 O(1) 的空间找到它们吗?

以任意顺序返回这两个数字均可。

示例 1:

输入: [1]
输出: [2,3]

示例 2:

输入: [2,3]
输出: [1,4]

思路 :我们将从1-n出现的数和nums中出现的数合并到一起,可以发现除了缺失的两个数(我们记为a,b)只出现了一次外,其余每个数都出现了两次,根据异或运算的性质,相同的数异或等于0,那么我们把这些数异或后得到的结果即为a和b异或的结果。

我们通过循环找到这两个数异或的结果中为1的比特位,然后把所有异或的数分成两组,两组之内分别异或得到最终的两个结果即为消失的数字

代码实现:

class Solution {
public:vector<int> missingTwo(vector<int>& nums) {//1.将所有数异或在一起int tmp=0;for(auto x:nums)tmp^=x;for(int i=1;i<=nums.size()+2;i++)tmp^=i;//2.找出a,b中比特位不同的那一位int dif=0;while(1){if(((tmp>>dif)&1)==1)break;else dif++;}//3.根据dif位不同,将所有数划分为两类异或int a=0,b=0;for(int x:nums)if(((x>>dif)&1)==1)b^=x;elsea^=x;for(int i=1;i<=nums.size()+2;i++){if(((i>>dif))&1==1)b^=i;else a^=i;}return {a,b};}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试每日三题

MySQL篇 MySQL为什么使用B树索引 B树每个节点可以包含关键字和对应的指针&#xff0c;即B树的每个节点都会存储数据&#xff0c;随机访问比较友好&#xff0c;B树的叶子节点之间是无指针相连接的 B树所有关键字都存储在叶子节点上&#xff0c;非叶子节点只存储索引列和指向子…

计算机网络 应用层上 | 域名解析系统DNS 文件传输协议FTP,NFS 万维网URL HTTP HTML

文章目录 1 域名系统DNS1.1 域名vsIP&#xff1f;1.2 域名结构1.3 域名到IP的解析过程域名服务器类型 2 文件传送协议2.1 FTP 文件传输协议2.2 NFS 协议2.3 简单文件传送协议 TFTP 3 万维网WWW3.1 统一资源定位符URL3.2 超文本传送协议HTTP3.2.1 HTTP工作流程3.2.2 HTTP报文结构…

真实进行软件测试面试中,自动化测试面试到底会问那些?

作者&#xff1a;川石信息 链接&#xff1a;https://www.zhihu.com/question/342170872/answer/813076226 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 自动化测试面试1&#xff1a; 1、使用什么测试框架做的上…

linux环境下从一个服务器复制文件到另一个服务器

在Linux中使用scp命令可以将文件或目录从一台服务器复制到另外一台服务器。 # 从源服务器复制文件到目标服务器 scp /path/to/source_file usernamedestination:/path/to/destination_directory # 从源服务器复制目录及其内容到目标服务器 scp -r /path/to/source_directory us…

基于LightGBM的肺癌分类模型:从预测到个体化治疗

一、引言 肺癌作为全球范围内主要死因之一&#xff0c;对人类健康产生了巨大威胁。准确的肺癌分类是制定有效治疗和预后评估的基础。传统的肺癌分类方法&#xff0c;如组织学类型和分期&#xff0c;虽然在临床实践中被广泛应用&#xff0c;但存在着诊断标准不一致、主观性强以及…

7.串口通信uart编写思路及自定义协议

前言&#xff1a; 串口是很重要的&#xff0c;有许多模块通信接口就是串口&#xff0c;例如gps模块&#xff0c;蓝牙模块&#xff0c;wifi模块还有一些精度比较高的陀螺仪模块等等&#xff0c;所以学会了串口之后&#xff0c;这些听起来很牛批的模块都能够用起来了。此外&#…

MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces(单独表空间)

文章目录 MySQL 8.0 InnoDB Tablespaces之File-per-table tablespaces&#xff08;单独表空间&#xff09;File-per-table tablespaces&#xff08;单独表空间&#xff09;相关变量&#xff1a;innodb_file_per_table使用TABLESPACE子句指定表空间变量innodb_file_per_table设置…

Git系统有哪些优势

在现在的这个软件开发领域&#xff0c;版本控制是一项非常重要的工作。Git作为比较流行的分布式版本控制系统&#xff0c;他有着独特的优势成为了很多开发者们的首选。那Git系统都有哪些优势呢&#xff0c;下面我以自己的理解简单的介绍一下。 分布式版本控制的优势 Git用的是…

JAVA那些事(三)方法

目录&#xff1a; 方法声明 方法调用 参数传递 递归 正文&#xff1a; 方法是完成特定功能的、相对独立的程序段。方法一旦定义&#xff0c;就可以在不同的程序段中多次调用 方法声明 格式; [修饰符] 返回值类型 方法名 [&#xff08;参数表&#xff09;] {声明部分语句…

标准地址门牌管理系统:提升地址管理效率与准确性的关键

在信息化社会的今天&#xff0c;地址管理的重要性日益凸显。无论是商业活动、物流配送&#xff0c;还是公共安全&#xff0c;都需要精确、高效的地址管理。然而&#xff0c;传统地址管理方式往往存在地址不规范、信息不全等问题&#xff0c;这无疑增加了管理难度和工作量。为此…

接口测试用例设计实践

引言&#xff1a; 在软件开发过程中&#xff0c;接口测试是确保系统各个模块之间正常交互的重要环节。本文将介绍一个接口测试用例的设计实践&#xff0c;包括用例ID、模块、接口名称、请求URL、前置条件、请求类型、请求参数类型、请求参数、预期结果、实际结果、备注、是否运…

linux 中 C++的环境搭建以及测试工具的简单介绍

文章目录 makefleCMakegdb调试 与 coredumpValgrind 内存检测gtest 单元测试 makefile 介绍 安装 : sudo apt install make makefile 的规则: 举例说明 包括&#xff1a;目标文件 、 依赖文件 、 生成规则 使用 &#xff1a; make make clean CMake : CMake是一个…

qt 中sqlite的性能优化与使用问题

SQLite 只支持一个并发的写入操作&#xff0c;但是多个进程可以同时连接和查询相同的数据库。 通过一些简单的配置和操作&#xff0c;我们完全可以使用 SQLite 创建 GB 级别的数据库并且支持高达每秒 10 万次的并发查询。 优化 SQLite 性能的配置如下&#xff1a; pragma jo…

046.Python包和模块_导入相关

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

2.Redis10大数据类型

文章目录 Redis Key&#xff08;键&#xff09;操作命令1.redis字符串 (String)案例&#xff1a;最常用&#xff1a;同时设置/获取多个键值&#xff1a;获取指定区间范围内的值&#xff1a;数值增减&#xff1a;获取字符串长度和内容追加&#xff1a;分布式锁&#xff1a;getse…

『番外篇五』SwiftUI 进阶之如何动态获取任意视图的 tag 和 id 值

概览 在某些场景下,我们需要用代码动态去探查 SwiftUI 视图的信息。比如任意视图的 id 或 tag 值: 如上图所示:我们通过动态探查技术在运行时将 SwiftUI 特定视图的 tag 和 id 值显示在了屏幕上。 这是如何做到的呢? 在本篇博文,您将学到如下内容: 概览1. “如意如意,…

手敲MyBatis(十三章)-返回Insert操作自增索引值

1.目的 这一章的目的主要是插入语句以后返回插入记录的id&#xff0c;因为插入语句可分为要返回记录id&#xff0c;不要返回记录id的以及不同数据源类型执行的时机也不同&#xff08;如&#xff1a;oracle不支持主键&#xff0c;需要先插入序列再增加&#xff0c;Mysql支持主键…

SQL指南:掌握日期函数来查询和管理数据

文章目录 1. 引言2. 建立数据库表2.1 建表语句2.2 数据插入 查询案例3.1 查询当前日期的订单3.2 查询过去一周内的订单3.3 查询明天的日期3.4 查询今年的订单3.5 查询特定月份的订单 总结 1. 引言 在数据库管理中&#xff0c;处理日期和时间是一项基本但重要的任务。本指南将通…

设计模式之模板方法模式,通俗易懂快速理解,以及模板方法模式的使用场景

文章目录 前言一、使用场景通常二、通过一个故事来更好地理解它当谈到模板方法模式时&#xff0c;我们可以通过一个故事来更好地理解它。以下是对应于故事的代码示例&#xff1a; 前言 当谈到模板方法模式时&#xff0c;在面向对象的编程中&#xff0c;它是一种行为设计模式。…

数智金融技术峰会|数新网络受邀分享《金融信创湖仓一体数据平台架构实践》,敬请期待

12月23日&#xff0c;数新网络参加DataFunSummit 2023&#xff1a;数智金融技术峰会。会上&#xff0c;数新CTO原攀峰将为大家带来《金融信创湖仓一体数据平台架构实践》 主题分享。 本次峰会由DataFun联合火山引擎、蓝驰等知名企业举办&#xff0c;将共同为大家带来一场数智金…