大家可能会想到把数组遍历一遍,把这n-1个数加起来,得到sum1.然后再对1到n求和,得到sum2.最后缺少的数字就是sum2-sum1.但是如果面试官继续问,还有没有更快的方法的?
其实异或运算是最快的,把数组所有的元素异或,再对1~n的整数进行异或,最后得到的结果就是缺少的数字.(力扣136题类似)
异或的几个性质:
x ^ 0 = x
x ^ x = 0
x ^ y ^ y = x ^ (y ^ y) = x ^ 0 = x
大家可能会想到把数组遍历一遍,把这n-1个数加起来,得到sum1.然后再对1到n求和,得到sum2.最后缺少的数字就是sum2-sum1.但是如果面试官继续问,还有没有更快的方法的?
其实异或运算是最快的,把数组所有的元素异或,再对1~n的整数进行异或,最后得到的结果就是缺少的数字.(力扣136题类似)
异或的几个性质:
x ^ 0 = x
x ^ x = 0
x ^ y ^ y = x ^ (y ^ y) = x ^ 0 = x