from bisect import bisect_left, bisect_right
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left = bisect.bisect_left(nums, target)
right = bisect.bisect_right(nums, target)
if left == right:
return [-1, -1]
else:
return [left, right-1]
九章模板必须分别判断s,e,分别计算左右边界,二分做2次。
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
if not nums:
return [-1, -1]
s,e = 0,len(nums)-1
while s + 1 < e:
mid = (s + e) // 2
if nums[mid] >= target:
e = mid
else:
s = mid
if nums[s] == target:
start = s
elif nums[e] == target:
start = e
else:
return [-1,-1]
s, e = 0, len(nums) - 1
while s + 1 < e:
mid = (s + e) // 2
if nums[mid] <= target:
s = mid
else:
e = mid
if nums[e] == target:
end = e
else:
end = s
return [start,end]