在做题中学习(36):消失的两个数字

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)

思路:丢失的数字 + 只出现一次的数字III

ps: 下面讲 丢失的数字 思路,另一个在前面的(32)。

丢失的数字:给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

异或特点:a ^ 0 = a; 

                  a ^ a = 0;

                  a ^ (b ^ c) = (a ^ b) ^ c; 

思路:用异或的几种规则可以想到,让一个数先异或数组中的数字一遍,再异或从0->n所有数字一遍,最后得到的数字就是丢失的数字。

下面的代码注释我也写的很详细了。

class Solution 
{
public:
    vector<int> missingTwo(vector<int>& nums) 
    {
        int ret=0;
        //异或数组内的
        for(auto e:nums)
        {
            ret ^= e;
        }
        //异或从1--N所有
        for(int i=1;i<=nums.size()+2;i++)
        {
            ret ^= i;
        }
        //走到这里ret已经是两个缺失的数字的异或了
        //接下来找最低位1
        int lowbit = ret&(-ret);
        int count = 0;
        while(lowbit!=1)
        {
            lowbit = lowbit>>1;
            count++;
        }
        //知道两个数在第count位就不一样了,以此分组
        int a = 0, b = 0;
        for(auto e:nums)
        {
            if(((e>>count)&1)==1)
            {
                a ^= e;
            }
            else
            {
                b ^= e;
            }
        }
        for(int i=1;i<=nums.size()+2;i++)
        {
            if(((i>>count)&1)==1)
            {
                a ^= i;
            }
            else
            {
                b ^= i;
            }
        }
        return {a,b};
    }
};










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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浏览器的工作原理 - 从输入URL 按下回车到页面展示过程发生了什么?

本文带大家一起了解一下从我们输入一个网址链接开始到页面展示在我们面前&#xff0c;整个浏览器发生了什么&#xff1f;或者说浏览器做了哪些事&#xff0c;咱们以大家常用的baidu.com为例&#xff0c;从输入到 baidu.com 页面出现的整个流程 第一步&#xff1a;地址栏中敲击第…

海外社媒营销新趋势,品牌出海如何做?

社交媒体在网上的影响力是毋庸置疑的。投资社交媒体平台并建立公司形象&#xff0c;提高产品运营收入&#xff0c;提升品牌知名度&#xff0c;对于吸引对您所提供的产品感兴趣的人至关重要。 然而&#xff0c;社交媒体格局总是在变化&#xff0c;这意味着您需要掌握新的社交媒…

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念&#xff1a; 线程就是一…

全球盲盒热潮:探寻海外市场的文化风潮与商机

近年来&#xff0c;盲盒经济在全球范围内持续升温&#xff0c;其独特的营销方式以及带给消费者的刺激感&#xff0c;引发了广大消费者的热烈追捧。特别是在海外市场&#xff0c;其增长速度之快&#xff0c;让各类盲盒品牌看到了巨大的商业潜力。然而&#xff0c;盲盒市场的快速…

使用工具类Exectors创建线程池

大型并发项目 不能使用Executors 通过ThreadPoolExector的方式 核心线程配置方式: 计算密集型的任务 核心线程数量 CPU的核数 1 IO密集型的任务 核心线程数量 CPU的核数*2 演示: Callable import java.util.concurrent.Callable;public class MyCallable implements Callab…

playbook控制语句

本章主要介绍 playbook中的控制语句。 目录 判断语句when &#xff08;1&#xff09;when判断中>、<、!的使用 &#xff08;2&#xff09;when判断中in的用法 &#xff08;3&#xff09;when判断中is的用法 判断语句block-rescue 循环语句 一个play中可以包含…

品牌出海如何做?海外社媒营销新趋势

社交媒体在网上的影响力是毋庸置疑的。投资社交媒体平台并建立公司形象&#xff0c;提高产品运营收入&#xff0c;提升品牌知名度&#xff0c;对于吸引对您所提供的产品感兴趣的人至关重要。 然而&#xff0c;社交媒体格局总是在变化&#xff0c;这意味着您需要掌握新的社交媒…

xposed 01 - 环境搭建

简介 Xposed的作者是rovo89&#xff0c;但是更新完 8.1 的 beta 版之后就不更新了。由于Android新版本的普及&#xff0c;目前新上市的手机基本都是8.0以上。所以Xposed框架已经不适用。EdXposed团队成为Xposed停止更新后的官方接任者。 当然现在有更好的 LSPosed https://git…

v-if与v-show的区别

v-if指令可以控制一个元素的显示和隐藏&#xff0c;那么它是如何实现的&#xff1f;它和看起来很像的v-show指令有什么区别呢&#xff1f; 如果v-if指令的值为假&#xff0c;那么这个元素不会被插入DOM。 下面的代码 <div v-if"true">one</div><div…

05-垃圾收集器ParNewCMS与底层三色标记算法详解

文章目录 垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法 垃圾收集器Serial收集器Parallel Scavenge收集器ParNew收集器CMS收集器 CMS的相关核心参数亿级流量电商系统如何优化JVM参数设置(ParNewCMS) 垃圾收集底层算法实现三色标记多标-浮动垃圾漏标-读写屏…

高级算法设计与分析(六) -- 分支限界法

系列文章目录 高级算法设计与分析&#xff08;一&#xff09; -- 算法引论 高级算法设计与分析&#xff08;二&#xff09; -- 递归与分治策略 高级算法设计与分析&#xff08;三&#xff09; -- 动态规划 高级算法设计与分析&#xff08;四&#xff09; -- 贪心算法 高级…

数字滤波器的设计

一般滤波器可以分为经典滤波器和数字滤波器。 经典滤波器&#xff1a;假定输入信号中的有用成分和希望去除的成分各自占有不同的频带。如果信号和噪声的频谱相互重迭&#xff0c;经典滤波器无能为力。比如 FIR 和 IIR 滤波器等。  现代滤波器&#xff1a;从含有噪声的时间序…

Envoy

一. Envoy ). Envoy Envoy 于 2017 年 9 月作为孵化项目加入 CNCF。从孵化到毕业&#xff0c;Envoy 都是 CNCF 增长最快的项目之一 Envoy 在吞吐量和延迟方面都表现良好。这在大型云原生部署中至关重要 Envoy 是专为大型现代 SOA&#xff08;面向服务架构&#xff09;架构设计…

python:删除空白

删除字符串末尾的空白 例如&#xff0c;下面的代码&#xff0c;变量hobby指向的字符串在末尾有一个空格&#xff1a; 可以使用函数rstrip()删除字符串末尾的空格&#xff0c;如下&#xff1a; 因为删除字符串末尾的空格并没有赋值给原变量hobby&#xff0c;所以此时查看hobb…

基于ssm房屋租赁平台的设计与开发论文

摘 要 目前对于在外的人员来说租赁房屋是最基本的问题。对于房屋的租赁可以选择直接找房东、找专业的房屋租赁公司和自己在网上找房屋。自己找房东的问题在于需要时间&#xff0c;而且对于需要提前租赁房屋的需要多次跑到小区&#xff0c;找中介租赁房屋的问题在于费用问题&am…

FPGA未解之谜

一.ila一会能加载出波形&#xff0c;一会加载不出波形——在自己做的v7开发板中遇到&#xff0c;其他开发板从未遇到过 1.小梅哥说&#xff1a;可能与硬件jtag连接不稳定导致。

CiteSpace最新安装教程

目录 一、CiteSpace特点介绍 二、CiteSpace安装教程 1、安装java 2、配置java环境变量 3、安装CiteSpace 4、运行CiteSpace 一、CiteSpace特点介绍 CiteSpace是一种用于分析学术文献的可视化工具&#xff0c;旨在帮助研究人员理解学术领域的演化、发现研究热点和趋势。 …

【Python】matplotlib画图_折线图

柱状图主要使用plot()函数&#xff0c;基本格式如下&#xff1a; plt.plot(x,y,label成功几率,colorb,marker.,ms8,mfcr,alpha0.5) 主要参数&#xff1a; x&#xff0c;y&#xff1a;xy轴数据 label&#xff1a;数据标签 color&#xff1a;折线颜色 marker&#xff1a;标…

什么是伦敦金的假突破?假突破为何有效?

部分投资者做伦敦金交易的时候喜欢追逐那些强势的行情&#xff0c;也就是我们所说的突破行情。但是突破行情会带来两种结果&#xff0c;一种是突破成功&#xff0c;而另一种是出现假突破。什么是伦敦金中的假突破呢&#xff1f;为什么假突破会有效呢&#xff1f;下面我们就来讨…

基于JAVA+SpringBoot+Vue的前后端分离的问题反馈处理平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在这个信息爆炸的时代…