二分法,主要是边界的细节,无了
public int missingNumber(int[] nums) {
if (nums.length == 0) return 0;
/** 判断nums[mid] 是否等于 mid
* 如果等于mid,那么这个数字在 [mid+1,right]区间内
* 如果不等于mid,就在 [left,mid-1]*/
int left = 0;
int right = nums.length - 1;
while (left <= right){
int mid = left + (right - left) / 2;
if (nums[mid] == mid) left = mid + 1;
else right = mid - 1;
}
return left;
}