找到间隔

时间:2015-07-11 20:18:32

标签: algorithm binary-search-tree binary-search union-find

我在x轴上有一组间隔,我希望找出包含某个元素的间隔总数。我知道问题可以通过二分查找来解决,但我无法解决。我该如何编码? (间隔可能重叠,否则我想到使用union find-disjoint set数据结构)

示例:

Intervals :
(1,10)
(2,12)
(4,9)
(3,7)
(5,15)

以上间隔是实线上的间隔。(包括) 并假设我有一个点矢量:

v=[2,5,6,7,1,3]

如何继续我的二元搜索方法?

1 个答案:

答案 0 :(得分:0)

这是一个经典问题,可以通过树的扩充来解决,以创建Interval Tree。您基本上可以保持一个平衡的间隔树,其中密钥通过增加下端点进行排序,但每个节点在其子树中保留间隔的最高端点。

如果您在Python中执行此操作,我已经编写了一个支持这些查询的程序包Banyan