1. /**
    2. * @param {number[]} nums
    3. * @param {number} target
    4. * @return {number[]}
    5. */
    6. var searchRange = function (nums, target) {
    7. if (!nums.length) return [-1, -1]
    8. let l = 0,
    9. r = nums.length - 1,
    10. mid = 0
    11. while (l <= r) {
    12. mid = Math.floor(l + (r - l) / 2)
    13. if (nums[mid] === target) {
    14. let i = mid - 1
    15. j = mid + 1
    16. while (nums[i] === target) {
    17. i--
    18. }
    19. while (nums[j] === target) {
    20. j++
    21. }
    22. return [i + 1, j - 1]
    23. }
    24. if (nums[mid] > target) {
    25. r = mid - 1
    26. } else {
    27. l = mid + 1
    28. }
    29. }
    30. return [-1, -1]
    31. };