給一個大小為n的數組,里面的元素為[0, n]中缺了一個數字,求缺的那個數字。
要求:
如果數組包含[1, n]那么它的和為
利用異或。
我們知道^為:1 ^ 1 = 0, 0 ^ 1 = 1。
那么,就可以得到這樣兩個結論:
x ^ x = 00 ^ x = x然后,對于這道題,我們可以另x1 = 0 ^ 1 ^ 2 ^ ....^ n,x2 = a[0] ^ a[0] ^...a[n - 1]
最后,我們用x1 ^ x2,可以知道:如果一個數y在a[]中出現過,假設為y ^ a[k] = 0。
基于這個思想,假設我們沒有出現的數是z,那么我們最后x1 ^ x2的結果即為:0 ^ z = z。
新聞熱點
疑難解答