题目描述
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
来源:力扣
题目详情与示例https://leetcode-cn.com/problems/missing-number/
思路
方法一:排序,下标与数组的值不同对应的下标就是丢失的数字
class Solution:
def missingNumber(self, nums: List[int]) -> int:
nums.sort()
for i, num in enumerate(nums):
if num != i:
return i
return len(nums)
方法二:位运算,将数组nums和{0,1,2,……,n}进行异或最后的结果就是丢失的数字。
class Solution:
def missingNumber(self, nums: List[int]) -> int:
xor = 0
for i, num in enumerate(nums):
xor ^= i ^ num
return xor ^ len(nums)
方法三:数列{0,1,2,……,n-1,n}的和与数组nums的和之差就是丢失的数字。
class Solution:
def missingNumber(self, nums: List[int]) -> int:
return len(nums) * (len(nums) +1) //2 - sum(nums)