Skip to content
On this page

34. Find First and Last Position of Element in Sorted Array

https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/

js
/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[]}
 */
var searchRange = function(nums, target) {
  return search(nums, target, 0, nums.length - 1)
}

function search(nums, target, l, r) {
  if (l > r) {
    return [-1, -1]
  }

  var m = (l + r) / 2 >> 0

  if (nums[m] < target) {
    return search(nums, target, m + 1, r)
  } else if (nums[m] > target) {
    return search(nums, target, l, m - 1)
  } else {
    let left = search(nums, target, l, m - 1)
    let right = search(nums, target, m + 1, r)

    return [
      left[0] === -1 ? m : left[0],
      right[1] === -1 ? m : right[1]
    ]
  }
}
py
class Solution(object):

    def searchRange(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        return self.search(nums, target, 0, len(nums) - 1)

    def search(self, nums, target, l, r):
        if l > r:
            return [-1, -1]
        m = (l + r) // 2
        if nums[m] < target:
            return self.search(nums, target, m + 1, r)
        elif nums[m] > target:
            return self.search(nums, target, l, m - 1)
        else:
            left = self.search(nums, target, l, m - 1)
            right = self.search(nums, target, m + 1, r)
            return [
                m if left[0] == -1 else left[0],
                m if right[1] == -1 else right[1]
            ]