剑指 Offer II 004. 只出现一次的数字

class Solution {
public int singleNumber(int[] nums) {
int ans = 0;
for (int i = 0; i < 32; i++) {
int sum = 0;
for (int num : nums) {
sum += ((num >>= i) & 1);
}
sum %= 3;
ans += (sum << i);
}
return ans;
}
}
如果某一个数只出现一次,那么总和加起来除以3得出来的商和余数相加就是只出现一次的这个数,让数组中的每个数按位右移相加,得到的数取余3,在按位左移得到的数就是原来的数

Guess you like

Origin blog.csdn.net/weixin_44927247/article/details/119988311