class Solution:
def upper_bound_(self , num , value , arr ):
if arr[num - 1] < value:
return num + 1
left=0
right=num-1
while left<right: # 当left=right时停止,题目要寻找第一个
mid = int((left+right)/2)
if arr[mid]>=value:
# mid大于并且等于value时(这里等于很关键),在左区间[left,mid]继续寻找
right=mid # 注意上面有等于号,所以这里mid不能减一
else: # 当mid小于vlue时,在右区间[mid+1,right]中继续寻找
left=mid+1
return left+1
京公网安备 11010502036488号