在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值,返回 [-1, -1]。
const searchRange = (nums, target) => {
let startIdx = 0
let endIdx = nums.length - 1
let index = -1
while(startIdx <= endIdx){
const midIdx = Math.floor((endIdx + startIdx) / 2)
const midVal = nums[midIdx]
if(midVal > target){
endIdx = midIdx - 1
}else if(midVal < target){
startIdx = midIdx + 1
}else{
index = midIdx
break
}
}
if(index === -1){
return [-1,-1]
}else {
let res = [index, index]
let leftIdx, rightIdx = index, rightIdx = index
while(nums[++rightIdx] === target){
res[1] = rightIdx
}
while(nums[--leftIdx] === target){
res[0] = leftIdx
}
return res
}
};
Leecode提交通过
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号