【问题标题】:Maximum no of overlaps of all time intervals [closed]所有时间间隔的最大重叠次数[关闭]
【发布时间】:2013-08-21 18:33:42
【问题描述】:

给定一组时间间隔,如何找到最大重叠数。是否有任何算法可以解决时间复杂度 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

【问题讨论】:

  • 视情况而定。如果一个项目与两个不同的集合重叠,它被认为是一个重叠还是两个重叠?另外,(12:14:30) 是否正确?是时间戳吗?考虑到其他集合,它只是不一致。
  • 不是有4个时间重叠吗?假设 (12:14:30) 应该是 (12:00-14:30)
  • 是的,有一些算法可以解决这个问题——它是通过一个简单的贪心算法来解决的en.wikipedia.org/wiki/Activity_selection_problem
  • @user2601967 也许如果您真的回答了 cmets 中提出的问题,我们将能够理解您正在尝试做什么,并且您不会得到无关紧要的回答。
  • 你不知道?投票结束。

标签: algorithm


【解决方案1】:

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

 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)

【讨论】:

  • @gbtimmon,真是个了不起的人!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多