出现一次的数字
看了何海濤的日志 他分別解決了一個 兩個 三個 出現一次的數字的思路 給人的感覺有一生二 二生三 三生萬物的思維
現把自己的感悟寫下來
一個 思路很簡單 所有數字異或的結果
兩個 關鍵是區別 所有的數字異或的結果同時也是兩個出現一次數字異或的結果 記為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/archive/2013/05/24/3097286.html
總結
- 上一篇: 一行 Python 代码,20款经典小游
- 下一篇: 串口和TCP测试工具