寻找左右边界的值
var searchRange = function(nums, target) {
//两个子函数
//查找左边界
const left=function(nums, target){
let l=0
let r=nums.length-1
let a=-2 //标记
while(l<=r){
let mid=l+Math.floor((r-l)>>1)
if(target>nums[mid]){
l=mid+1
}else{ //如果target等于mid,继续左移查找边界
//边界左移(r=mid-1)
r=mid-1
a=r
}
}
//如果找不到左边界,则a=-2
return a
}
//查找右边界
const right=function(nums, target){
let l=0
let r=nums.length-1
let b=-2 //标记
while(l<=r){
let mid=l+Math.floor((r-l)>>1)
if(target<nums[mid]){
r=mid-1
}else{ //如果target等于mid,继续右移查找边界
//边界右移(l=mid+1)
l=mid+1
b=l
}
}
//如果找不到右边界,则b=-2
return b
}
let l=left(nums, target)
let r=right(nums, target)
// 不在nums内
if(l === -2 || r === -2) return [-1,-1];
// 存在
if (r - l > 1) return [l + 1, r - 1];
//
return [-1, -1];};