问题:给定一个数组,找到目标值对应下标并返回
难点:确定区间范围
左闭右闭 [ left, right ]
var search = function(nums, target) {
let left = 0//左边界
let right = nums.length-1//右边界(包含)
while(left<=right){
let mid = Math.floor((right - left) / 2) + left;
//let mid = Math.floor((right + left) / 2)
if(nums[mid]<target){//目标值在右半区间
left = mid+1//更新左下标(包含左)
}else if(nums[mid]>target){//目标值在左半区间
right = mid-1//更新右下标(包含右)
}else{
return mid
}
}
return -1
};
左闭右开 [ left, right )
var search = function(nums, target) {
let left = 0//左边界
let right = nums.length//右边界(不包含)
while(left<right){
let mid = Math.floor((right + left) / 2)
if(nums[mid]<target){//目标值在右半区间
left = mid+1//更新左下标(包含左)
}else if(nums[mid]>target){//目标值在左半区间
right = mid//更新右下标,不包含mid
}else{
return mid
}
}
return -1
};