34. Find First and Last Position of Element in Sorted Array
¶
- Time: $O(\log n)$
- Space: $O(1)$
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
1 2 3 4 5 6 7 | |
var searchRange = function(nums, target) {
const bound = (first) => {
let l = 0, r = nums.length - 1, ans = -1;
while (l <= r) {
const m = Math.floor((l + r) / 2);
if (nums[m] === target) {
ans = m;
if (first) r = m - 1;
else l = m + 1;
}
else if (nums[m] < target) l = m + 1;
else r = m - 1;
}
return ans;
};
return [bound(true), bound(false)];
};