AcWing 68. 0到n-1中缺失的数字
原题链接
简单
作者:
尼古拉斯小布丁
,
2021-04-14 08:21:14
,
所有人可见
,
阅读 291
方法一:枚举
class Solution {
public:
int getMissingNumber(vector<int>& nums) {
int num;
if(nums.size()==0) return 0; //vector元素个数为0的情况
if(nums.size()==1) return 1; //元素个数为1
bool flag = false; //设定标志变量,判断是否找到缺失的数
for(int i=0;i<nums.size();i++){
if(nums[i]!=i){
num = i;
flag = true;
break;
}
}
if(flag) return num;
else return nums.size(); //没有找到,就返回元素个数
}
};
算法2:二分
class Solution {
public:
int getMissingNumber(vector<int>& nums) {
if(nums.empty()) return 0;
int l=0, r=nums.size()-1;
while(l<r){
int mid = (l + r) >>1;
if(nums[mid]!=mid) r=mid; //若成立,说明mid在右半边(下标和值不对应的区间)
else l=mid+1;
}
if(nums[r]==r) r++;
return r;
}
};