【发布时间】:2020-05-05 13:21:27
【问题描述】:
假设您有一个区间列表,例如 [(0 4), (1 3), (2 5), (2 6)]。此列表未排序。然后给你一个范围,例如 [1 5]。您必须返回适合范围内的间隔数。在这个问题中,它会返回 2. ((1 3) and (2 5))
间隔列表保持不变,但我们最多有 100000 个查询,每个查询都包含一个范围。对于每个范围查询,我们必须返回适合其中的区间数。
经过研究,我读到了Interval Trees。但是,您只能查询与任何给定范围重叠的间隔,而我正在寻找落在范围内的间隔。这些查询需要对数时间。
有没有办法以相似的时间复杂度解决这个问题,可能是区间树的变体?我不是在寻找线性解决方案(因为蛮力无论如何都意味着扫描所有间隔)。
【问题讨论】:
-
您是否对同一个区间列表进行了多次查询?
-
是的,最多 10^5。
-
如果您同时获得所有查询,则很容易。不然挺难的。你在问题中遗漏了很多细节,所以....
-
是的,您同时收到查询 - 我会将其添加到我的帖子中。
-
如果您需要任何其他详细信息,我会添加它:)
标签: algorithm tree language-agnostic range intervals