模板参见 labuladong
很清晰的题解
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
def left_bound(l,r):
while(l<=r):
mid=(l+r)//2
if(nums[mid]==target):
r=mid-1
elif(nums[mid]>target):
r=mid-1
else:
l=l+1
if(l==n):return -1
return l if(nums[l]==target) else -1
def right_bound(l,r):
while(l<r):
mid=(l+r)//2
if(nums[mid]==target):
l=mid+1
elif(nums[mid]<target):
l=mid+1
else:
r=mid
return l-1
if(not nums):
return [-1,-1]
n=len(nums)
left=left_bound(0,n-1)
if(left==-1):
return [-1,-1]
right=right_bound(0,n)
return [left,right]
作者:wu_yan_zu
链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/bian-jie-xi-jie-zhu-xing-jie-shi-python3-by-zhu_sh/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。