题目
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路
a. array数组中的全部元素进行异或得到 x
b. 因为两个不同的数,异或结果一定不为0, 这里假设x为6(0000 0110)
c. findLastBit在x二进制中从右往左找到第一个为1的位,右移1次(posBit)可以得到
d. 再次遍历数组,当array[i]右移posBit并和1进行与运算,可以将两个不同的数分在不同的组
e. 与此同时,num1[0]和num2[0]的它同组的元素进行异或操作,得到最终结果
|
|