【发布时间】:2017-04-12 02:08:54
【问题描述】:
假设我有一个这样的范围列表
[[1,3], [2,5], [4,6], [8,10], [12,15], [13,17]]
现在我想找到一个范围说[3,11] 落入。我的算法应该给我这个范围落入的所有范围。例如这个的输出应该是
Output - [1,3], [2,5], [4,6], [8,10]
我该如何解决这个问题?
PS:我知道分段树可能会有所帮助。我可以在哪里构建树来存储区间并查询位于区间内的点,但是如何获取给定区间的所有区间。
【问题讨论】:
-
来自en.wikipedia.org/wiki/Interval_tree 我们有“具体来说,它允许人们有效地找到与任何给定区间或点重叠的所有区间”
-
如果这是给定范围列表的一次性任务,您只需暴力破解列表。如果您需要经常查询相同的数据,您可以构建一棵树。如果数据经常更改但您很少查询,您可能会发现另一种结构更有用。
标签: algorithm intervals segment-tree interval-tree