题目地址:链接
思路:
- 第一个二分确认 target 在数组中的最左侧位置,同时判断数组是否存在 target 值
- 第二个二分确认 target 在数组中的最右侧位置。
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var searchRange = function(nums, target) {
let n = nums.length;
let ans = [-1, -1];
let [l1, r1] = [0, n - 1];
while(l1 < r1) {
let mid = l1 + r1 >> 1;
if(target <= nums[mid]) r1 = mid;
else l1 = mid + 1;
}
if(nums[l1] != target) return ans;
let [l2, r2] = [0, n - 1];
while(l2 < r2) {
let mid = l2 + r2 + 1 >> 1;
if(target >= nums[mid]) l2 = mid;
else r2 = mid - 1;
}
return [l1, l2]
};

被折叠的 条评论
为什么被折叠?



