【剑指offer】面试题40:数组中只出现一次的数字

题目:

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

思路:

因为只有两个只出现一次的数字,所以所有数字进行异或之后得到值res一定不是0.这样,res中其中至少1bit不是0,我们根据这个bit是否为0把数组分为两组,两个只出现一次的数字肯定在不同的组。其他出现两次的数组两个肯定在相同组,而两个相同的数组异或之后是0,任意一个数字与0异或还是该数字本身。

代码:

class Solution {
public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {if(data.size()<=1)  return;int res=data[0];for(int i=1;i<data.size();++i)res=res^data[i];int k=find1Index(res);*num1=0;*num2=0;for(int i=0;i<data.size();++i){if(kBitIs1(data[i],k))*num1=(*num1)^data[i];else*num2=(*num2)^data[i];}}
private:bool kBitIs1(int num, int k){return ((num>>k)&1)!=0;}int find1Index(int num){//找最右边的1的位数int k=-1;while(num){++k;if(num&1){//++k;这句应该不管if-else都要执行才对return k;}elsenum=num>>1;//不能只写成num>>1;
        }return k;}
};

 

转载于:https://www.cnblogs.com/buxizhizhou/p/4764780.html

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

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

相关文章

图像处理 --- 4.1 图像增强的点运算

1. 图像增强的点运算 1.1 概念 图像增强&#xff1a; 采用一系列计数改善图像的视觉效果&#xff0c;或将图像转换成一种更适合于人或机器进行分析和处理的形式。 1.2 图像增强的主要方法 按照图像的作用域来说&#xff1a; 空间域增强&#xff1a;直接对图像各种像素进行…

5G临时牌照或将发放,商用大幕已经开启

报告来源&#xff1a;广发证券、华泰证券、网络资料前 言&#xff1a;5月17日是世界电信日&#xff0c;业内认为这是5G临时牌照发放的重要时间点。日前中国联通在活动上表示&#xff0c;北京联通已率先开展面向商用的5G规模试验&#xff0c;近期北京将开始5G的试商用。这侧面印…

大三下 期中试卷

自己做的&#xff0c;仅供参考。对错自负 湛江师范学院2014&#xff0d;2015学年度第 2学期 期中试卷 科目&#xff1a;LINUX网络服务器管理 题号 一、 操作 二、 C 编程 三、 shell编程 四、 辩论 总分 评分 复核 分值 25 25 25 25 100 蔡广基 得分 得分…

tf.nn.dropout

转自&#xff1a;https://blog.csdn.net/huahuazhu/article/details/73649389 tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数&#xff0c;它一般用在全连接层。 Dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概…

常用照片尺寸

常用照片尺寸对照表&#xff1a;

无人驾驶中用到的八大坐标系

本文来源&#xff1a;智车科技第一个叫作eci地心惯性坐标系&#xff08;如图&#xff0c;红色o-xyz坐标系所示&#xff0c;低新惯性坐标系&#xff08;i系&#xff09;的原点位于地球原点&#xff0c;z轴沿地轴指向北极&#xff0c;x轴和y轴位于赤道平面内&#xff0c;与z轴满足…

np.random.get_state()

转自https://blog.csdn.net/Strive_For_Future/article/details/81210907 state np.random.get_state() 功能&#xff1a;获取随机生成器 np.random的状态 作用&#xff1a;常与np.random.set_state() 搭配使用。使随机生成器random保持相同的状态&#xff08;state&#x…

c#之内置类型

内置类型&#xff1a;就是.NET Framework System命名空间中写好的类型。 下面看看C#都有哪些内置类型 上面的内置类型&#xff0c;除了string和object外&#xff0c;其他的都被称作简单类型。也可以把左边的看作C#类型的关键字&#xff0c;左边是类型的别名&#xff0c;关键字和…

图像处理 --- 三、图像变换 3.1图像变换的基本概念

1. 图像变换的基本概念 1.1 什么是变换 《线性代数》中&#xff1a; 线性空间中&#xff0c;如果x是一个向量&#xff0c;U 是一个矩阵&#xff0c;则&#xff1a;y U x &#xff0c;定义了向量 x 到向量 y 的一个线性变换。 如果 n 阶矩阵 U 满足: UT U I &#xff0c;称…

tf.parse_single_example

parse_single_example(serialized,features,nameNone,example_namesNone ) 参数&#xff1a; serialized&#xff1a;一个标量字符串张量&#xff0c;单个序列化的例子。features&#xff1a;一个 dict&#xff0c;映射功能键到 FixedLenFeature 或 VarLenFeature值。name&am…

全球5G专利能力榜T0P15出炉:谁是冠军?

来源&#xff1a;通信产业网第50个世界电信和信息社会日&#xff08;5月17日&#xff09;即将到来。在5G即将商用的关口&#xff0c;今年&#xff0c;世界电信日的主题定调为“缩小标准化差距”。实际上&#xff0c;标准专利对通信技术发展起着至关重要的作用&#xff0c;它不仅…

对于软件工程的理解

对软件工程的理解&#xff1a; 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。 不懂的问题&#xff1a; 1.软件工程是否需要很强的数学思维&#xff1f; 2.做软…

tf.train.Coordinator和tf.train.start_queue_runners

TensorFlow提供了两个类来实现对Session中多线程的管理&#xff1a;tf.Coordinator和 tf.QueueRunner&#xff0c;这两个类往往一起使用。 Coordinator类用来管理在Session中的多个线程&#xff0c;可以用来同时停止多个工作线程并且向那个在等待所有工作线程终止的程序报告…

图像处理 --- 三、图像变换 3.2 图像的几何变换

2. 图像的几何变换 图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化。图像几何变换是图像处理及分析的基础。 图像的几何变换包括&#xff1a;图像平移、比例缩放、旋转和图像插值。 图像几何变换的实质&#xff1a;改变像素空间位置或估算新空间位置上的…

MEMS智能传感器技术的新进展

来源&#xff1a;MEMS引言信息社会已步入智能时代发展阶段&#xff0c;智能手机、智能可穿戴设备、无线智能网络、智能汽车、智能无人机和智能机器人等智能设备的创新与发展正在或将要改变信息社会的各个方面&#xff0c;而作为智能时代发展的基础和关键技术之一&#xff0c;ME…

关系表达式的计算

近期在做一个项目&#xff0c;涉及到一些简单的规则匹配。规则的判定条件可以用关系表达式描述&#xff0c;形如(P1|P2)&(P3|P4)。其中&是与&#xff0c;|是或&#xff0c;P1-P4是Pattern&#xff0c;具体的匹配条件&#xff0c;返回值是True或者False。为计算此表达式…

TensorFlow下安装matplotlib模块

如果运行TensorFlow时报错“no module named matplotlib ”&#xff0c;这是因为未安装matplotlib&#xff0c;打开命令提示符小黑框&#xff0c;输入 pip install matplotlib 等待安装即可 安装完后&#xff0c;我兴高采烈在TensorFlow环境中的编辑器中试一试&#xff0c;发…

windows7 安装MySQL 解决报错 服务没有响应控制功能

windows7 安装MySQL 1. 下载MySQL 官网&#xff1a;https://dev.mysql.com/downloads/installer/ 下载想要的版本。 下载的是压缩文件&#xff0c;解压到安装目录。 2. 准备 2.1 my.ini 文件设置 [mysql] # 设置mysql客户端默认字符集 default-character-setutf8[mysqld…

谁在引领中国制造?中国智能制造发展解析

来源&#xff1a;亿欧智库导读&#xff1a;技术和行业需求的不断融合引领我国智能制造快速发展&#xff0c;随着政策、技术和产品的不断落地&#xff0c;智能化进程在我国制造业各子行业将呈现出不同的面貌。全球制造的未来&#xff1f;制造强国一直是全世界各国发展的目标。随…

qemu-kvm磁盘读写的缓冲(cache)的五种模式

qemu-kvm磁盘读写的缓冲(cache)模式一共有五种&#xff0c;分别是writethrough, wirteback, none, unsafe, directsync当你对VM读写磁盘的性能有不同的要求的时候&#xff0c;你可以在其启动的参数(cachexxxx)里面进行一个合理的选择. 现在来简单说一说这五种模式的各自的特点(…