34_Find First and Last Position of Element in Sorted Array
Last updated
Last updated
def searchRange(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
# find the starting position
left, right, start = 0, len(nums)-1, -1
while left <= right:
middle = left + (right - left)//2
if nums[middle] == target:
start = middle
# throw away the right part of the array
right = middle - 1
elif nums[middle] < target:
left = middle + 1
else:
right = middle - 1
if start == -1:
return [-1,-1]
# find the ending position
left, right, end = start, len(nums)-1, start
while left <= right:
middle = left + (right - left)//2
if nums[middle] == target:
end = middle
# throw away the left part of the array
left = middle + 1
elif nums[middle] < target:
left = middle + 1
else:
right = middle - 1
return [start, end]