解法一:简单遍历
一次简单遍历即可。
时间复杂度:O(n) ,空间复杂度:O(1)。
int missingNumber(vector<int>& nums) {
int len = nums.size();
for(int i=0;i<len;i++)
if(nums[i]!=i) return i;
return len;
}
解法二:二分查找
通过数组元素与与下标是否对应未条件进行二分查找。
时间复杂度:O(logn) ,空间复杂度:O(1)。
int missingNumber(vector<int>& nums) {
int len = nums.size();
int l=0,r=len-1;
while(l<=r){
int mid = (l+r)>>1;
if(nums[mid]==mid) l=mid+1;
else r=mid-1;
}
return l;
}