#面试题#三进制异或

来源:互联网 发布:手机百度音乐没有网络 编辑:程序博客网 时间:2024/06/16 16:43

#面试题#数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法,找到x。


分析:

    假设该题目修改为:除了某一个数字x之外,其他数字都出现了两次,而x出现了一次。 则可以把所有数字直接求异或,最终的结果就是x。这个很好理解。

    而该题目是其他数字都出现了三次,可以想到三进制异或运算。其实异或运算的本质就是求和 % base。 比如 1 ^ 1 = 0  其实就是 (1+1) % 2 = 0。 因此只要按位求和,最后再将每位结果 模除 3,再转换为二进制即是答案x。


代码如下:


原创粉丝点击