一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
具体的思路为:
因为这个数组是顺序的,所以自然的联想到的二分查找
解析题目的意思:使用二分查找 找到第一个num[i]!=i的数
class Solution {
//第一种方法,需要额外的空间
public int missingNumber(int[] nums) {
int l=-1,r=nums.length;
//找到第一个num[i] !=i
while(l+1!=r){
int mid = l+(r-l)/2;
if(nums[mid]==mid){
l=mid;
}else{
r=mid;
}
}
return r;
}
}
