代码仓库:Github | Leetcode solutions @doubleZ0108 from Peking University.
- 解法1(T45% S22%):排序,遍历数组序号,如果数组元素不等于序号则返回当前位置,最终如果还没返回则返回数组长度
- 解法2(T95% S73%):等差数列求和,一次遍历,常数空间
( 0 + n ) ∗ ( n − 1 ) 2 − s u m ( n u m s ) \frac{(0 + n) * (n-1)}{2} - sum(nums) 2(0+n)∗(n−1)−sum(nums)
class Solution:
# 解法2
def missingNumber(self, nums: List[int]) -> int:
return (0+len(nums))*(len(nums)+1)//2 - sum(nums)
# 解法1
def missingNumber1(self, nums: List[int]) -> int:
nums.sort()
for i in range(len(nums)):
if nums[i] != i:
return i
return len(nums)