题目
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组
中,请找出这个数字。
排序数组中的搜索问题,首先想到二分法解决。
排序数组使用双指针也是高频选项
利用二分法
class Solution {
public int missingNumber(int[] nums) {
int l = 0,r = nums.length-1,m = l + (r-l)/2;
while (l <= r){
//此时缺失的数字在m的左边
if(nums[m] > m){
r = m - 1;
}else {
l = m + 1;
}
m = l + (r-l)/2;
}
return l;
}
}