Given an array of integers nums sorted in non-decreasing order, find the starting and ending position of a given target value.
If target is not found in the array, return [-1, -1].
You must write an algorithm with O(log n) runtime complexity.
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var searchRange = function(nums, target) {
let start = 0, end = nums.length - 1;
while(start <= end) {
let mid = Math.floor((start + end) / 2);
if(nums[mid] >= target) {
end = mid - 1;
} else {
start = mid + 1;
}
}
/*
5 7 7 8 8 10
s m e
*/
if(nums[start] !== target) return [-1, -1];
let l = start;
start = 0, end = nums.length - 1;
while(start <= end) {
let mid = Math.floor((start + end) / 2);
if(nums[mid] > target) {
end = mid - 1;
} else {
start = mid + 1;
}
}
let r = end;
return [l, r]
};