def lower_bound(nums:list[int],target:int) -> int:
l,r = 0,len(nums) - 1
while l <= r:
mid = (l + r) // 2
if nums[mid] < target:
l = mid + 1
else:
r = mid - 1
return l
nums = input()
if len(nums) == 0:
nums = []
else:
nums= list(map(int,nums.split(',')))
target = int(input())
start = lower_bound(nums,target)
end = lower_bound(nums,target + 1) - 1
if len(nums) == 0 or nums[start] != target:
print([-1,-1])
else:
print([start,end])
手撕3_二分查找_在排序数组中查找元素的第一个和最后一个位置
于 2024-04-10 00:17:17 首次发布