所有时间间隔的最大重叠次数

时间:2013-08-21 18:33:42

标签: algorithm

给定一组时间间隔,如何找到最大的重叠次数。是否有任何算法可以解决时间复杂度为O(n log n)或O(n)??

的给定问题

例如:(6:00-9:30),(9:00-12:30),(10:00-10:30),(12:00-14:30),(11:00- 13:30)。答案是3

1 个答案:

答案 0 :(得分:16)

使用快速排序 - O(nlogn)时间对值进行排序。

 6:00(+)
 9:30(-)
 9:00(+)
12:30(-)
10:00(+)
10:30(-)
12:14:30(Dude wut?) --> Im going to assume you meant 12:00(+) ,14:30(-)
11:00(+)
13:30(-)

变为

 6:00(+)
 9:00(+)
 9:30(-)
10:00(+)
10:30(-)
11:00(+)
12:00(+)
12:30(-)
13:30(-)
14:30(-)

遍历每个加号的递增列表,递减每个减号,记录找到的最大值。这需要O(n)时间

总时间O(nlogn + n) = O(nlogn)