我在x轴上有一组间隔,我希望找出包含某个元素的间隔总数。我知道问题可以通过二分查找来解决,但我无法解决。我该如何编码? (间隔可能重叠,否则我想到使用union find-disjoint set数据结构)
示例:
Intervals :
(1,10)
(2,12)
(4,9)
(3,7)
(5,15)
以上间隔是实线上的间隔。(包括) 并假设我有一个点矢量:
v=[2,5,6,7,1,3]
如何继续我的二元搜索方法?
答案 0 :(得分:0)
这是一个经典问题,可以通过树的扩充来解决,以创建Interval Tree。您基本上可以保持一个平衡的间隔树,其中密钥通过增加下端点进行排序,但每个节点在其子树中保留间隔的最高端点。
如果您在Python中执行此操作,我已经编写了一个支持这些查询的程序包Banyan。