2017-04-12 84 views
2
列表

让说,我有这样的给定一个区间,找到所有的间隔在间隔

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

范围的列表现在我想找到一个范围说[3,11]落在我的算法应该给我所有的范围都在这个范围内。例如,输出这应该是

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

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

+2

从https://en.wikipedia.org/wiki/Interval_tree我们有“具体来说,它允许人们有效地找到重叠的所有间隔与任何给定的时间间隔或点“ – mcdowella

+0

如果这是给出一系列范围的一次性任务,则只需对列表进行暴力破解。如果您需要经常查询相同的数据,则可以构建一棵树。如果数据经常变化但很少查询,则可能会发现其他结构更有用。 –

回答