有N个请求,包含开始时间和结束时间。我想找到可以重叠的请求。例如:对于此示例{{R1,R2},{R2,R3},{R4,R5,R6},{R4,R6,R7}}
具有重叠的请求R7 ------
R6 -----
R5 ------
R4 -----------
R3 ---
R2 -----
R1 ---
如何使用Java生成重叠集?
答案 0 :(得分:2)
生成一个间隔端点列表,按时间排序。
按顺序遍历列表,同时保留一组已开始但尚未结束的间隔。
当您遇到“开始”端点时,请将端点所属的间隔添加到该集合中。 当您遇到“结束”端点时,将当前设置输出为重叠间隔集之一,然后从“当前”设置中删除该间隔。
你需要为同时结束的多个间隔添加一些额外的逻辑,以防止重复输出,但这不应该太难。