题目描述:给出一个数组,包含0…n的值其中一个缺失,找出缺失的那一个,要求线性时间,常数空间。
题目链接:Leetcode 268. Missing Number
用位^
操作记录0…n 再遍历^
然后两个异或得出结果。
或者用等差数列求和。
def missingNumber(self, nums):
n = len(nums)
return n * (n+1) / 2 - sum(nums)
代码如下
class Solution:
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
a = -1
b = -1
for i in range(n):
a ^= nums[i]
b ^= i
b ^= n
return a^b