给一个大小为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。
新闻热点
疑难解答