位运算 的探究
给学弟出了一道题, 告诉你n个数, 其中只有一个数出现一次, 其他的数都出现三次.求出现一次的那个数.
最暴力的方法就是排序了.
排序后我们就顺序统计了, 遇到不是三个连续的了, 就找到答案了.
聪明的位运算做法
由于只有32位, 我们可以开一个32位的数组, 然后遍历所有的数字时, 数字每一位都加到数组对应的位置中, 然后模3.
这样最后数组中肯定都是01,, 这些01组成的数字就是答案了.
http://github.tiankonguse.com/blog/2014/10/22/n-m-problem/
Read full article from 位运算 的探究
给学弟出了一道题, 告诉你n个数, 其中只有一个数出现一次, 其他的数都出现三次.求出现一次的那个数.
最暴力的方法就是排序了.
排序后我们就顺序统计了, 遇到不是三个连续的了, 就找到答案了.
聪明的位运算做法
由于只有32位, 我们可以开一个32位的数组, 然后遍历所有的数字时, 数字每一位都加到数组对应的位置中, 然后模3.
这样最后数组中肯定都是01,, 这些01组成的数字就是答案了.
http://github.tiankonguse.com/blog/2014/10/22/n-m-problem/
Read full article from 位运算 的探究