class Solution(object):
def searchRange(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
if len(nums) == 0: return [-1, -1]
if len(nums) == 1:
if nums[0] == target: return [0, 0]
else: return [-1, -1]
l = 0
r = len(nums)-1
cnt = 0
# 搜索左边界
while l<r:
# 向左取整
mid = l+(r-l)//2
if nums[mid] < target:
l = mid + 1
elif nums[mid] > target:
r = mid - 1
elif nums[mid] == target:
r = mid
if nums[l] != target: return [-1, -1]
start = l
r = len(nums)-1
# 搜索右边界
while l<r:
# 向右取整
mid = r-(r-l)//2
if nums[mid] < target:
l = mid + 1
elif nums[mid] > target:
r = mid - 1
elif nums[mid] == target:
l = mid
return [start, r]