个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字
都在范围0 ~ n-1之内。在范围0 ~ n-1内的n个数字中有且只有个数字不在该数组中
请找出这个数字。
function foo(arr){
if(!Array.isArray(arr)){
return console.log('可以做类型转换,不做处理了')
}
let left = 0;
let right = arr.length;
let mid;
function fn (){
mid = Math.floor((left + right) / 2);
if(left>= right) return console.log(`不在数组中的数字是:${mid+1}`);
if(arr[mid] <= mid){
left = mid + 1;
} else {
right = mid -1;
}
return fn();
}
fn()
}
foo([0,1,3,4,5]); // 2
foo([0,1,2,3,5]); // 4
foo([0,1,2,3,4,5,7]); // 6
foo([0,1,2,3,4,5,6,8]); // 7