Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
有 N 个请求,开始时间和结束时间。我想找到可以重叠的请求。例如:本例中有重叠的请求 {{R1,R2},{R2,R3},{R4,R5,R6},{R4,R6,R7}}
R7 ------ R6 ----- R5 ------ R4 ----------- R3 --- R2 ----- R1 ---
如何使用 Java 生成重叠集?
生成按时间排序的区间端点列表。
按顺序遍历列表,同时保留一组已开始但尚未结束的间隔。
当您遇到“开始”端点时,将端点所属的间隔添加到集合中。当您遇到“结束”端点时,将当前集输出为重叠间隔集之一,然后从“当前”集中删除该间隔。
您需要为同时结束的多个间隔添加一些额外的逻辑,以防止重复输出,但这应该不会太难。