问题:给出一个数组,其中只有一个数出现一次,其它数出现三次,找出出现一次的数
思路:
1、统计每位出现的次数,如果mod 3等于1,则将该位置为1,最后即得到出现一次的数。
2、使用三个变量来分别来表示出现一次,两次,三次的位。
即two |= one & nums[i]; one ^= nums[i]; three = two & one; one &= ~three; two &=~three
3、使用两个变量分别表示出现一次,两次的位
one = (~two) & (one ^ nums[i]); two = (~one) & (two ^ nums[i])
具体代码参考:
https://github.com/wuli2496/OJ/tree/master/LeetCode/Single%20Number%20II