博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组中只出现一次的数字
阅读量:6231 次
发布时间:2019-06-21

本文共 821 字,大约阅读时间需要 2 分钟。

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 
思路:由于性质:a ^ a = 0 ; 0 ^ n = n; 由于数组中有两个数字只出现一次,所以:
1.  将数组中的所有数字 ^,得到的数是这两个数的  ^,
2.  找到两个数 ^ 结果的最后一个1,即为两个数不相同的位
3.根据该位分组,则每一组中只有一个只出现一次的数字。
4.将两个组,分别 ^ ,则分别得到要求的两个数。

代码:

void FindNumsAppearOnce(vector
data,int* num1,int *num2) { int len = data.size(); int num = 0; for(int i = 0; i < len;i++) { num = num^data[i]; } int tmp = 1; while((num&tmp) == 0) { tmp = tmp<<1; } int arr1[500],arr2[500]; int id1 =0 ; int id2 = 0; for(int i = 0; i < len;i++) { if((data[i] & tmp) == 0) (*num1)^=data[i]; else (*num2)^=data[i]; } }

 

转载于:https://www.cnblogs.com/Lune-Qiu/p/9127124.html

你可能感兴趣的文章
ie兼容性问题 前传
查看>>
如何使用postman传数组数据
查看>>
蓝桥学院2019算法题2.6
查看>>
elasticsearch安装
查看>>
软件工程团队第一次作业
查看>>
饼图tooltip
查看>>
Java第二次作业
查看>>
python configparser
查看>>
motan源码分析五:cluster相关
查看>>
tomcat配置
查看>>
chd校内选拔赛题目+题解
查看>>
Python 字典
查看>>
视觉SLAM中的李群&李代数基础
查看>>
[转]谈谈Linux下动态库查找路径的问题
查看>>
α冲刺 (8/10)
查看>>
Unity shader(CG) 写一个 散色、折射、反射、菲涅尔、gamma、简单后期屏幕特效
查看>>
oracle在线迁移同步数据,数据库报错
查看>>
Java中1.0 / 0.0 会输出什么?
查看>>
【后缀自动机】
查看>>
前端开发易忘内容收录
查看>>