二分在我们使用过程中是一个极其注重细节的东西,虽然它写法简单,但,要想一遍过,却又少不了基本功:
l <r ; l<=r ; r = mid ; r = mid+1 ; l = mid; l = mid-1
种种,我们尝试去呗模板,但模板却又太死板了,大部分情况下压根没法用我们想要搞明白着实困难,现在有一套简单的模板,写此,记录:
l, r = -1, len(idxs)
while l+1 != r
mid = l + r >> 1
if True:
r = mid
else:
l = mid
我们可以把他们认为是一个红蓝区间,于是问题就变成了,在这个红蓝区间内中边界值了,
我们可以根据具体的情况放回l,r。
因为l/r是属于不同红蓝区域的。