首先参考 https://blog.csdn.net/weixin_53415043/article/details/136273463
小总结:python 中提供了 bisect_left 和 bisect_left ,主要区别是当序列中有相同元素的时候, bisect_left 返回最左边的位置,bisect_right 返回最右边的位置
再考虑如下问题(来自 https://leetcode.cn/problems/my-calendar-i/),有一个sorteddict {1, 3} {6, 8} {9, 11} 表示数轴上的线段,现在我有一个线段{4, 5} 是否能够插入到这个 sorteddict
一个思路是用二分查找法,对于 sorteddict, 它的 key list 是 1 6 9,所以我们用
sorteddict.bisect_left(5) 找到第一个大于等于5 的位置(这里是 1),这里一开始总是无法理解为什么这么做,后来想明白了, 返回的1 ,根据bisect_left 的说明,是要找到插入5 的位置,但是在 5 还没有插入之前,这个1 是当前6 的位置,所以返回的 index 对应的当前元素是就是大于等于目标数字的位置。








网友评论