一、题目
数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
二、分析
2.1 异或规则
A.1^0=1
B.1^1=0
C.1^2^2=1
2.2 题目分析
根据规则我们来看一下[3,0,1]这个数组,分析一下看看如何做?我们的目旳是得到2.如何得到它呢?根据异或规则C,我们需要跟【0,1,2,3】 4个数做异或最后方能得到2?
2.2.1 得到3的方法
arr = [3,0,1]
num = count(arr)
2.2.2 得到【0,1,2】的方法
res = 0
for i=0;i<num;i++{
res ^=i
}
2.3 题目答案
result := 0
num :=len(nums)
for i := 0; i < num; i++ {
result ^= i
result ^= nums[i]
}
result ^= num
return result