两次二分查找
先找到左边界,然后在 [左边界,末尾] 找出右边界
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
l = 0
r = len(nums)
if(r == 0):
return [-1,-1]
while(l < r):
m = (l + r) //2
if(nums[m] >= target):
r = m
else:
l = m+1
if(l >= len(nums) or nums[l] != target):
return [-1,-1]
ans_l = l
r = len(nums)
while(l < r):
m = (l + r) //2
if(nums[m] > target):
r = m
else:
l = m + 1
return [ans_l,l-1]