算法思想
把数组中的每个数考虑成二进制,统计一下每一位数出现的次数,如果是重复的数,那么每一位应该是3的倍数,否则的话就是只出现一次的数字;
java代码
class Solution {
public int findNumberAppearingOnce(int[] nums) {
int res = 0;
for(int i = 31; i >= 0; i --)
{
int cnt = 0;
for(int x : nums)
if((x >> i & 1) == 1) cnt ++;
if((cnt % 3) == 1) res = res * 2 + 1;
else res = res * 2;
}
return res;
}
}