码迷,mamicode.com
首页 > 编程语言 > 详细

数组中只出现一次的数字

时间:2019-11-05 18:33:39      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:相同   font   不同   数组   inf   包含   code   区分   这一   

技术图片

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

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,归为另一组。这样就得到了两个组,将问题成功转换为夹出问题技术图片

数组中只出现一次的数字

标签:相同   font   不同   数组   inf   包含   code   区分   这一   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!