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?
Difficulty:Medium
两种方法:
C++:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int sum = 0;
for(int i = 0;i<nums.size();i++)
sum+=nums[i];
return (((0+nums.size())*(nums.size()+1))/2)-sum;
}
};
class Solution(object):
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
i = 0
nums.sort()
if nums[i]!=0:
return 0
i+=1
leng = len(nums)
while i<leng:
if i!=nums[i]:
return i
i+=1
return i