1 用10000個數的數組循環匹配9999個數,匹配成功,從9999數組中去除,不成功就是該數。
2 從1加到10000,結果是50005000,對數組求和,結果是X,被拿掉的數就是50005000-X
假如拿掉的是兩個數,怎麼才能找出拿掉的數:求出10000個數的和A,求出10000個數的平方和B,
求出剩下的數的和a,求出剩下的數的平方和b,
假定去掉的兩數是x,y
那麼
x+y=A-a
x^2+y^2=B-b
解一個2元2次方程組就出來了。
複雜度還是O(n)
3 xor
首先複習一下異或運算(^)的性質:它滿足交換律、結合律。
設 最初的數組是 A,
拿掉 x 之後的數組是 B,
xor() 是對數組內所有元素做異或,則有:
xor(A) == xor(B) ^ x
xor(B) ^ xor(A) == xor(B) ^ xor(B) ^ x == 0 ^ x == x