位运算 的探究
摘要:给学弟出了一道题, 告诉你n个数, 其中只有一个数出现一次, 其他的数都出现三次.求出现一次的那个数.
学弟发给我一个代码, 第一眼竟然没看明白.
int run(int n, int* A) {
int ones = 0;// 出现一次的标志位
int twos = 0;// 出现第二次标志位
for(int i = 0; i n; i++) {
ones = (ones ^ A[i]) & ~twos;
twos = (twos ^ A[i]) & ~ones;
}
return ones;
}
阅读全文
posted @
2014-10-23 10:08
tiankonguse
阅读(334)
推荐(1) 编辑