题目描述:
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。
进阶:
你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?
思路:
索引值:0,1,2,3,4
值 :0,1,2,4,5
如果把最后一个值5加上,然后互相异或,则可得到最终的值
代码:
1、
class Solution:
def missingNumber(self, nums: List[int]) -> int:
sum = 0
sum1 = 0
for i in range(len(nums)+1):
sum += i
sum1 = reduce(lambda x,y:x+y,nums)
return sum - sum1
2、
class Solution:
def missingNumber(self, nums: List[int]) -> int:
ans = len(nums)
for i,num in enumerate(nums):
ans ^= i^num
return ans