第一次查到的位置:
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
本文介绍了一种在有序数组中查找特定目标元素首次和末次出现位置的算法实现。通过两个函数`left_bound`和`right_bound`,可以精确地找到目标元素的起始和结束下标,适用于二分搜索场景。
2652

被折叠的 条评论
为什么被折叠?



