题目链接
难度:简单 类型: 数组、数学
给定一个包含 0, 1, 2, ..., n 中 n 个数的序列,找出 0 .. n 中没有出现在序列中的那个数。
示例1
输入: [3,0,1]
输出: 2
示例2
输入: [9,6,4,2,3,5,7,0,1]
输出: 8
解题思路
方法1:
1到n的和是,数组长度为n时,是0到n+1的数列中缺失了一个数,用该有的和-当前数组元素的和=缺失的数字
方法2:
数组中所有的数字与1到n+1进行异或操作,出现两次的数都会消失,只剩下出现一次的数,即为缺失的数
类似于136.只出现一次的数字
代码实现
方法1:
class Solution:
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
return n*(n+1)//2 - sum(nums)
方法2:
class Solution:
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
res = 0
for i, num in enumerate(nums):
res ^= (i+1) ^ num
return res