给定一组时间区间,如何找到最大的重叠次数。是否有算法可以在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。
给定一组时间区间,如何找到最大的重叠次数。是否有算法可以在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。
使用快速排序算法将数值进行排序 -- 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)