中级农民
- 积分
- 221
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2022-3-15
- 最后登录
- 1970-1-1
|
本楼: |
👍
100% (4)
|
|
0% (0)
👎
|
全局: |
👍 100% (21) |
|
0% (0) 👎 |
常用的需要两个模版,二分查找需要数据具有二段性。
假设有x为false,o为true。
情形1:[xxxxxxooooooo],查找第一个True/o的位置,即查找左边界
while l<r:
m = (l+r)//2
if check(m):
r = m
else:
l = m + 1
情形2:[oooooxxxxxxxx],查找最后一个True/o的位置,即查找右边界
while l<r:
m = (l+r+1)//2
if check(m):
l = m
else:
r = m - 1 |
|