NC105 二分查找
题目描述
请实现有重复数字的有序数组的二分查找。
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
示例1
输入
5,4,[1,2,4,4,5]
返回值
3
说明
输出位置从1开始计算
# # 二分查找 # @param n int整型 数组长度 # @param v int整型 查找值 # @param a int整型一维数组 有序数组 # @return int整型 # class Solution: def upper_bound_(self , n , v , a ): # write code here if n == 0: return n+1 else: if a[-1] <= v: return n+1 min_ = 0 max_ = n while True: if a[min_] >= v: return min_ + 1 target = int((max_ + min_) /2) if target > 0 and a[target -1] >= v: max_ = target else: min_ = target
日行一善, 日写一撰