ones记录只出现过一次的bits,twos记录出现过两次的bits,threes记录出现过三次的bits;
仔细理解还是很好理解的,具体看代码:
class Solution {
public:
int singleNumber(int A[], int n) {
int ones=0,twos=0,threes;
for(int i=0;i<n;i++){
int t=A[i];
twos|=ones&t;
ones^=t;
threes=ones&twos;
ones&=~threes;
twos&=~threes;
}
return ones;
}
};
本文介绍了一种使用位操作解决数组中找出仅出现一次数字的问题的方法。通过维护三个变量ones、twos和threes来分别记录只出现过一次、两次和三次的比特位,最终返回只出现过一次的数字。
2518

被折叠的 条评论
为什么被折叠?



