给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
方法一:
思路:range()获取下标,查看下标包含于数组中的情况,如果下标不在数组中,该下标即为缺失的数字
class Solution:
def missingNumber(self, nums: List[int]) -> int:
n = len(nums)
for i in range(n + 1):
if i not in nums:
return i
方法二:
思路:enumerate()获取下标和元素,查看下标和元素相等的情况,不相等的那个下标即为丢失的数字
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)
方法三:位运算
思路:利用异或计算下标和元素以及长度,最后的结果即为丢失的数字
class Solution:
def missingNumber(self, nums: List[int]) -> int:
r = 0
for i,num in enumerate(nums):
r ^= i ^ num
return r^len(nums)