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

现把自己的感悟写下来

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

两个 关键是区别 所有的数字异或的结果同时也是两个出现一次数字异或的结果 记为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 这个很容易理解吧!

 

相关文章:

  • 2021-08-18
  • 2021-11-03
  • 2021-08-12
  • 2021-07-11
  • 2022-01-22
猜你喜欢
  • 2021-06-11
  • 2022-12-23
  • 2021-10-07
相关资源
相似解决方案