Skip to content

Latest commit

 

History

History
45 lines (39 loc) · 1.16 KB

File metadata and controls

45 lines (39 loc) · 1.16 KB

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.

Screen Shot 2021-11-27 at 16 33 00

/**
 * @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]
};