在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 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提交通过
以自己现在的努力程度,还没有资格和别人拼天赋