分析
二分查找的前提:
- 数组有序
- 数组无重复
二分查找的代码要点:
while循环时的区间要保持一致! 比如target是在左闭右闭区间就要一直坚持这个原则、
最基础的二分写法
严格限制序列单调递增/无重复,且只要求返回下标
var search = function(nums, target) {
let left =0
let right =nums.length -1
// 左闭右闭的区间
while(left<=right){
// 左距离+区间长度的一半,向下取整
let mid =left +Math.floor((right -left)/2)
if(nums[mid]>target){
right =mid-1
}else if(nums[mid]<target){
left =mid+1
}else{
return mid
}
}
return -1
};
二分的各种变型