异或
题目:
1、给定一个数组,其中一个数只出现了奇数次,剩余只出现了偶数次 求出这个出现了奇数次的数
(1)思路
采取异或运算的形式
N ^N = 0 0^N = N
对数组中的每一个数都进行异或,最终得到的数就是结果
(2)代码
2、给定一个数组,其中两个个数只出现了奇数次,剩余只出现了偶数次 求出这两个出现了奇数次的数
答
(1)思路:
对数组中的每一个数都进行异或,最终得到的数就是 eor1= a^b ,由于a和b不相等,所以eor的值肯定不等于0
假设eor二进制的第八位为1,那么a或者b二进制的第八位肯定不相同 (一个0,一个1)
让所有二进制数第八位是0的进行异或运算,那么最终得到的eor2不是a就是b
然后让eor2与eor1进行异或 最终得到另一个数
(2)代码
比较难理解的是
rightOne二进制只有一个最右边的1 其他都是0