丢弃孤立的点对

时间:2013-07-29 18:41:58

标签: python algorithm

我有一百万对整数(a,b)的列表。如何在python中使用以下属性准备数据结构?当我看到一对新的整数时,我想能够判断它是否很快与我列表中的任何现有对重叠?假设b > ad > c我说(a,b)和(c,d)重叠if(a <= cb >= c)或(a<=d和{ {1}})或者a和b都在c和d之间。

这可以在日志时间以某种方式完成吗?

1 个答案:

答案 0 :(得分:0)

您可以预处理现有数据,使您的数据包含非重叠间隔。也就是说,如果(a,b)和(c,d)相交,你可以将它们合并为单个区间(a,d)或(a,b)或(c,b)或(c,d),具体取决于重叠的性质。

有关此步骤的更多详细信息:根据起点(终点作为辅助键)对间隔进行排序。合并步骤可以在O(n)时间完成。

现在,对合并的间隔进行排序。为了测试重叠,您可以进行两次二进制搜索。