使用java生成重叠集

时间:2013-03-16 19:57:36

标签: java algorithm

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

具有重叠的请求
R7                  ------
R6                -----
R5            ------
R4          -----------
R3      ---
R2    -----
R1   ---

如何使用Java生成重叠集?

1 个答案:

答案 0 :(得分:2)

生成一个间隔端点列表,按时间排序。

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

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

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