【leetcode算法题】消失的数字,异或解法

一、题目

数组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

2.3 题目答案

	result := 0
	num :=len(nums)
	for i := 0; i < num; i++ {
		result ^= i
		result ^= nums[i]
	}
	result ^= num
	return result

你可能感兴趣的:(leetcode)