找缺失数字
对于有序的也是可以采用二分查找,这里的关键点是在缺失的数字之前,必然有nums[i] = i,在缺失的数字之后,必然有nums[i] != i.
因此,只需要二分找出第一个nums[i] != i,此时下标i就是答案了。如果数组中没有找到次下标,那么缺失的就是n。
public int missingNumber (int[] a){
int left = 0;
int right = a.length-1;
while(left <= right){
int mid = (left+right)/2;
if(a[mid]==mid){
left = mid+1;
} else {
right = mid-1;
}
}
return left;
}