二分,缺失的数字能够将整个区间分为两段
另外要注意特殊情况:当所有数都满足nums[i] == i
时,表示缺失的是 n
y总解答得非常好,建议看y总的
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;
else l=mid+1;
}
if(nums[r]==r) r++;
return r;
}
};