题目:
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 only constant extra space complexity?
代码:
#include<limits.h>
#include<math.h>
class Solution {
public:
int missingNumber(vector<int>& nums) {
int zeroidx = 0;
nums.push_back(1);
for(int i = 0; i < nums.size()-1; i++){
if(abs(nums[i]) == 0) zeroidx = i;
nums[abs(nums[i])] = -nums[abs(nums[i])];
}
for(int i = 0; i < nums.size(); i++){
if(nums[i] > 0) return i;
}
return zeroidx;
}
};
代码2:
class Solution {
public:
int missingNumber(vector<int>& nums) {
int n = nums.size();
int sum = 0;
for (auto n : nums) {
sum += n;
}
return (n + 1) * n / 2 - sum;
}
};