1、这题tmd有点读不懂。后面才知道,比如数组长度是10,那么里面应该包含0到10的数字,如果某些数字没包含,就把它们输出。这个用数组来做倒是很好办,但是要遍历一次次原数组和后面创建的数组。本以为没有官方答案快,但是是差不多的。
class Solution {
public:
int missingNumber(vector<int>& nums) {
int len = nums.size();
int arr[len+1];
memset(arr, 0, sizeof(arr));
for(int i=0; i<len; i++){
arr[nums[i]] = 1;
}
for(int i=0; i<len+1; i++){
if(arr[i] != 1){
return i;
}
}
return -1;
}
};
2、官方是先给原数组排序,遍历一次数组,次序跳了就输出。
class Solution {
public:
int missingNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n = nums.size();
for (int i = 0; i < n; i++) {
if (nums[i] != i) {
return i;
}
}
return n;
}
};