Location found for the first time:
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
Last location found:
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