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