这与寻找重叠区间有关。我知道如何在给出区间列表(区间树)的情况下这样做。我所拥有的是间隔列表。例如,
[2,6], [7,11] [1,3], [5,10], [11,13] [2,5], [6,8]
结果应该是
[2,3], [7,8]
我需要做的是找到所有列表中通用的间隔列表。
我认为这个问题类似于合并n
列表。问题是我不能应用列表的成对合并。应用此方法可能会导致重叠间隔丢失。所以我需要一次将所有列表合并在一起(而不是成对的)。
我可以使用区间树。将每个列表中的第一个间隔插入到间隔树中并找到重叠。从树中删除最弱的区间并从其中一个列表中插入下一个区间。我还没有完全弄清楚如何使用这种方法,但似乎它会变得太贵。
是否有任何有效的算法可以从间隔列表中查找重叠间隔。?
附加信息: 列表中的间隔已排序。它们不重叠并形成一个序列。