万能模板:
def lower_bound(array, first, last, value): # 返回[first, last) 内第一个不小于value的值的位置。如果不存在,返回last
while first < last:
mid = first + (last - first) // 2
if array[mid] < value: first = mid + 1
else: last = mid
return first # last也行,因为[first, last) 为空时他们重合
例题:x的平方根
计算并返回 x 的平方根,其中 x 是非负整数。
由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
def mySqrt(x):
first=1
last=x+1
while first<last:
mid=first+(last-first)//2
tmp=mid**2
if tmp<x+1:
first=mid+1
else:
last=mid
return first-1
需根据题目修改取值范围、if条件和返回值。
526

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



