题目:
Given an array containing n distinct numbers taken from 0, 1, 2, …,n, find the one that is missing from the array.
Example 1:Input: [3,0,1] Output: 2
Example 2:
Input: [9,6,4,2,3,5,7,0,1] Output: 8
Note: Your algorithm should run in linear runtime complexity. Could you
implement it using onlyconstant extra space complexity?
解释:
第一反应就是求和。对于连续的数组,可以用n*(n+1)//2
来节省求和时间n=len(nums)
。
python代码:
class Solution:
def missingNumber(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n=len(nums);
_sum=n*(n+1)//2
return _sum-sum(nums)
c++代码:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n=nums.size();
int _sum=n*(n+1)/2;
return _sum-accumulate(nums.begin(),nums.end(),0);
}
};
总结:
对于连续数组求和,可以用n*(n+1)//2
来求和节省时间。