初めて見つかった場所:
def left_bound(nums,target):
low = 0
high = len(nums)-1
while low<=high:
mid = low+(high-low)//2
if nums[mid]<target:
low = mid+1
elif nums[mid]>target:
high = mid-1
else:
high = mid-1 #向右缩小范围
if low>=len(nums) or nums[low]!=target:
return -1
return low
最後に見つかった場所:
def right_bound(nums,target):
low = 0
high = len(nums)-1
while low<=high:
mid = low+(high-low)//2
if nums[mid]<target:
low = mid+1
elif nums[mid]>target:
high = mid-1
else:
low = mid+1
if high<0 or nums[high]!=target:
return -1
return high