首页 > 编程语言 > 详细

数组中只出现一次的数字

时间:2019-11-05 19:37:57      阅读:84      评论:0      收藏:0      [点我收藏+]

技术分享图片

 扩展:数组中只出现一次的两个数字

1、在上述题目中,数组中所有数字异或得到单独数字;那么在这个题目中,数组中所有数字异或得到这两个单独数字的异或;

2、我们只需要把数组中所有数字分成两组,并且每一组中的仅包含一个单独数字,那么就把这个问题转化为基础问题了,比如:

数组:[a,b,c,d,a,b]转换为[a,a,c],[b,b,d],或者是[a,a,d],[b,b,c]。

3、x是两个不相同数字的异或,那么x必然不是0,我们只要找到x为1的某一位,比如第n位,或者m位,只要是x在这一位上为1。那么在这一位上,c,d是不同的,异或运算才得到1,否则就是0了。,这就是区分c,d的关键

4、遍历数组,当第n位为1的时,归位一组,第n位不为1,归为另一组。这样就得到了两个组,将问题成功转换为夹出问题技术分享图片

数组中只出现一次的数字

原文:https://www.cnblogs.com/yangyanfen/p/11800321.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!