面试题53-2:0~n-1中缺失的数字
文章目录
题目
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
考点
二分法,最后的i,j分别指向右子数组的首位元素和左子数组的末位元素
右子数组的首位元素下标即为所求,返回i即可
LeetCode版本
class Solution {
public:
int missingNumber(vector<int>& nums) {
int i = 0, j = nums.size()-1;
while(i<=j){
int mid = (i+j)>>1;
if(nums[mid] == mid ) i =mid+1;
else j = mid -1;
}
return i;
}
};