class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
res = [-1, -1]
for i, num in enumerate(nums):
if num == target:
if res[0] == -1:
res[0] = res[1] = i
else:
res[1] = i
return resclass Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left = self.binarySearch(nums, target, True)
right = self.binarySearch(nums, target, False)
return [left, right]
def binarySearch(self, nums, target, leftBias):
l, r = 0, len(nums) - 1
i = -1
while l <= r:
m = (l + r) // 2
if target > nums[m]:
l = m + 1
elif target < nums[m]:
r = m - 1
else:
i = m
if leftBias:
r = m - 1
else:
l = m + 1
return iclass Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
def binarySearch(target):
l, r = 0, n
while l < r:
m = l + (r - l) // 2
if nums[m] >= target:
r = m
else:
l = m + 1
return l
start = binarySearch(target)
if start == n or nums[start] != target:
return [-1, -1]
return [start, binarySearch(target + 1) - 1]class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left = bisect.bisect_left(nums, target)
if left >= len(nums) or nums[left] != target:
return [-1, -1]
right = bisect.bisect_right(nums, target) - 1
return [left, right]