这与查找重叠间隔有关。我知道如何给定一个间隔列表(间隔树)。我所拥有的是间隔列表。例如,从间隔列表中有效查找重叠间隔
[2,6], [7,11] [1,3], [5,10], [11,13] [2,5], [6,8]
这个结果应该是
[2,3],[7,8]
我需要做的是找到所有列表中常见的间隔列表。
我看到此问题与合并n
列表类似。问题是我无法应用列表的成对合并。应用此方法会导致重叠间隔的丢失。所以我需要将所有列表合并在一起考虑所有列表(而不是成对)。
我可以使用区间树。将每个列表的第一个区间插入到区间树中并找到重叠区域。从树中删除最薄弱的时间间隔,并从其中一个列表中插入下一个时间间隔。我还没有完全想到如何使用这种方法,但似乎它会变得太昂贵。
是否有任何有效的算法来从间隔列表中查找重叠间隔。
附加信息: 列表中的间隔进行排序。它们不重叠并形成一个序列。
很抱歉,我失去了你在“这给你跑转总数”。你能否详细说明一下。谢谢! – akaHuman
第一个条目仍然是位置。第二个是这一点的变化总和。所以我们开始'[1,1]',然后'[2,1 + 2]',然后'[2,1 + 2-1]'等等(因为变化遵循'1,2,-1, 0,0,1,-1,-1,0,-1')。 0转换并不重要,所以我放弃了它们。 – btilly
谢谢!这是一个很好的。 – akaHuman