【发布时间】:2017-06-20 18:04:02
【问题描述】:
我一直在寻找一种有效的算法来合并动态间隔数组上的重叠间隔。例如,(开始时间,结束时间)明智,
[(1, 2), (4, 8), (3, 10)]
变成
[(1, 2), (3, 10)]
合并后,因为 (4, 8) 和 (3, 10) 重叠。重叠意味着两个区间的任何部分共享相同的时刻。
我知道当给出一个完整的数组时,可以在按开始时间升序对间隔进行排序后使用堆栈完成操作 (reference: geeksforgeeks)。但是这个算法只有在给定数组是非动态的时候才有效,但我正在寻找对动态数组有效的算法。例如,数组区间会频繁更新和插入,每次操作都要合并区间。
【问题讨论】:
-
如果你的数组总是“合并”和排序,添加一个新区间的复杂度应该是 O(log n) (对于插入/合并的适当位置的二进制搜索)。跨度>
-
您能否详细说明答案部分的完整算法。 @EugeneSh。
标签: arrays algorithm dynamic merge intervals