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?
题意:给定长度为n的数组,存储0~n这n+1个数字,找到其中丢失的数字,要求时间复杂度O(n),不使用额外的空间。
思路:从0到n相加,然后减去数组中的数,即为消失的数。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int len = nums.size();
int i = 0;
for (auto num : nums) {
len += i++ - num;
}
return len;
}
};