在node.js中,将几组给定时间段合并为一个表示重叠时间段的集合,这是一种非常有效的方法吗?期间作为开始日和结束日提供。
4 sets of time intervals (days):
(-------------------------) (---------) (---)
(------------------------) (-------)
(--------) (-------) (----)
(---------------------) (---------) (---) (-----------)
New set representing overlaps:
(--) (-----) (---)
答案 0 :(得分:2)
将所有开始和结束时间戳合并到一个列表中(存储时间戳,无论是开始还是结束) - 天真地或使用more efficient algorithm如果你有很多集合。
(-------------------------) (---------) (---)
(------------------------) (-------)
(--------) (-------) (----)
(---------------------) (---------) (---) (-----------)
( ( ( ( )) ) ( ( ( )))) ( ) ( ((( ))) )
然后使用简单的递增/递减扫描:
0 - ---- ------ ---
1 (------ ------- -) (---) (-- -----)
2 (---------- --) (-- ) (- -)
3 (------ -) (-- --) ( )
4 (--) (-----) (---)
并收集计数最大的区间。
^^^^^ ^^^^^^^ ^^^^^