出现一次的数字

看了何海涛的日志 他分别解决了一个 两个 三个 出现一次的数字的思路 给人的感觉有一生二 二生三 三生万物的思维

现把自己的感悟写下来

一个 思路很简单 所有数字异或的结果

两个 关键是区别 所有的数字异或的结果同时也是两个出现一次数字异或的结果 记为XORresult<>0 区别这两个数字就用XORresult中为1的某一位

三个 关键还是区别 所有的数字异或的结果同时也是三个出现一次数字异或的结果 记为XORresult

    这个地方是关键哦

      经过一系列的反证法 作者得出来了一些列结论

        具体过程:

        1. 对于任何三个不为0的数字 i, j, k, f(i)^f(j)^f(k) 结果不可能为0 如下图

          

          

         因此 f[ f( XORresult^a ) ^ f( XORresult^b ) ^ f( XORresult^c ) ... ] 结果不可能为0;

        2. XORresult^a XORresult^b XORresult^c 第m位不可能都是1 这个很容易理解吧!

原文地址:https://www.cnblogs.com/Knuth/p/3097286.html