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

Algorithm 给定一个间隔,在间隔列表中查找所有间隔,algorithm,intervals,segment-tree,interval-tree,Algorithm,Intervals,Segment Tree,Interval Tree,假设我有一个这样的范围列表 [[1,3]、[2,5]、[4,6]、[8,10]、[12,15]、[13,17]] 现在我想找到一个范围,比如说[3,11]。我的算法应该给出这个范围的所有范围。例如,此项的输出应为 输出-[1,3]、[2,5]、[4,6]、[8,10] 我该如何着手解决这个问题 PS:我知道分段树可能会有帮助。在这里,我可以构建树来存储区间并查询区间内的一个点,但如何获得给定区间的所有区间。区间树无疑是您需要的数据结构。我面临着同样的问题,为了提高性能,我使用了增强区间树,其中

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

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

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

输出-[1,3]、[2,5]、[4,6]、[8,10]

我该如何着手解决这个问题


PS:我知道分段树可能会有帮助。在这里,我可以构建树来存储区间并查询区间内的一个点,但如何获得给定区间的所有区间。

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


您可以在这里找到一个深入的解释和Java实现:

来自我们的“特别是,它允许您高效地找到与任何给定间隔或点重叠的所有间隔”。如果这是一个一次性任务,给定一个范围列表,您只需强行通过列表即可。如果需要经常查询相同的数据,可以构建一个树。如果数据经常更改,但很少查询,您可能会发现另一种结构更有用。