2

有 N 个请求,开始时间和结束时间。我想找到可以重叠的请求。例如:本例中有重叠的请求 {{R1,R2},{R2,R3},{R4,R5,R6},{R4,R6,R7}}

R7                  ------
R6                -----
R5            ------
R4          -----------
R3      ---
R2    -----
R1   ---

如何使用 Java 生成重叠集?

4

1 回答 1

2

生成按时间排序的区间端点列表。

按顺序遍历列表,同时保留一组已开始但尚未结束的间隔。

当您遇到“开始”端点时,将端点所属的间隔添加到集合中。当您遇到“结束”端点时,将当前集输出为重叠间隔集之一,然后从“当前”集中删除该间隔。

您需要为同时结束的多个间隔添加一些额外的逻辑,以防止重复输出,但这应该不会太难。

于 2013-03-16T21:58:44.147 回答