1.基础的二分搜索框架
function search(nums,target){
let left=0,right=nums.length-1;
while(left<=right){
let mid=left+(left+right)/2;
if(nums[mid]<target){
left=mid+1;
}
else if(nums[mid]>target){
right=mid-1;
}
else if(nums[mid]==target){
return mid;
}
}
return -1;
}
2.寻找左侧边界的二分搜索
function search(nums,target){
let left=0,right=nums.length-1;
while(left<=right){
let mid=left+(left+right)/2;
if(nums[mid]<target){
left=mid+1;
}
else if(nums[mid]>target){
right=mid-1;
}
else if(nums[mid]==target){
right=mid-1;
}
}
if(left>=nums.length||nums[left!==target]){
return -1;
}
}
3.寻找右侧边界的二分搜索
function search(nums,target){
let left=0,right=nums.length-1;
while(left<=right){
let mid=left+(left+right)/2;
if(nums[mid]<target){
left=mid+1;
}
else if(nums[mid]>target){
right=mid-1;
}
else if(nums[mid]==target){
left=mid+1;
}
}
if(right<0||nums[right]!==target){
return -1;
}
}