假设我有一个像这样的范围列表
[[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,但是如何获得给定间隔的所有间隔。
答案 0 :(得分:1)
Interval Tree绝对是您需要的数据结构。我遇到了同样的问题,为了提高性能,我使用了增强区间树,其中除了范围的边界外,每个节点还包括与最大值相关的信息。节点的子树。
您可以在此处找到深入解释和Java实现:Data Structures: Augmented Interval Tree to search for intervals overlapping