L2_二分查找
Last updated
Was this helpful?
Last updated
Was this helpful?
二分里等于的那个头,start或者end,后面后判断。因为等于了还被移动,答案就在另一半了。
二分花花模板,最后返回的L要按条件调整
Bisect
bisect_left
插入位置在最左边
返回第一个等于x的位置
返回应该插入的位置
所有相等元素左边
bisect_right
插入位置在最右边
返回最后一个等于x的位置+1
返回应该插入的位置
所有相等元素右边
bisect_left
的情况查找元素是否存在(替代in
操作)
pythonCopy
寻找第一个≥x的元素
pythonCopy
需要精确位置时
如区间问题中找不重叠的最后一个区间
实现有序集合
保证相同元素插入位置一致
bisect_right
的情况计算元素出现次数
pythonCopy
寻找最后一个≤x的元素
pythonCopy
需要插入到重复元素之后
如维护按时间排序的日志,新事件插入到相同时间事件的末尾
"Left"联想:
左边界 → 第一个等于x的位置
如C++中的lower_bound
"Right"联想:
右边界 → 最后一个等于x的位置+1
如C++中的upper_bound
插入场景想象:
bisect_left
插入后元素在相同值的最前面
bisect_right
插入后元素在相同值的最后面