Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

For example,
Given nums = [0, 1, 3] return 2.

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

思路

找到连续数组当中缺失的那个数。

要想实现O(1)的空间复杂度,可以利用等差数列公式,将数组的和与等差数列的和进行比较即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
add = 0
length = len(nums)
for i in nums:
add += i
should = ( (1 + length) * length ) / 2
return should - add