给定间隔,在间隔列表中查找所有间隔

时间:2017-04-12 02:08:54

标签: algorithm intervals segment-tree interval-tree

假设我有一个像这样的范围列表

[[1,3], [2,5], [4,6], [8,10], [12,15], [13,17]]

现在我想找到一个范围说[3,11]落入。我的算法应该给我这个范围所属的所有范围。例如,此输出应为

Output - [1,3], [2,5], [4,6], [8,10]

我如何解决这个问题?

PS:我知道细分树可能会有所帮助。我可以在哪里构建树来存储间隔并查询位于内部间隔内的Point,但是如何获得给定间隔的所有间隔。

1 个答案:

答案 0 :(得分:1)

Interval Tree绝对是您需要的数据结构。我遇到了同样的问题,为了提高性能,我使用了增强区间树,其中除了范围的边界外,每个节点还包括与最大值相关的信息。节点的子树

您可以在此处找到深入解释和Java实现:Data Structures: Augmented Interval Tree to search for intervals overlapping