您获得'n'约会。每个约会包含startime和endtime。您必须有效地重新启动所有冲突的约会。启动时间和结束时间可以从几分钟到几年不等。我看到帖子:FInd overlapping appointments in O(n) time?与此非常相似。但仍有疑问。
我的问题是,如果我们有一个分类的时间表,请说:(6:30-6:35),(6:40-7:10)(7:25-7:40),(7:35 -7:50)等等。
我们是否可以不遍历计划清单并确保下一次约会只能在上一次约会结束后开始?在这种情况下,我们对安排约会的可能时间采用非常严格的约束。在这个例子中,我们知道从7:35开始的约会是在最后一次约会结束之前(7:40)所以这是一个冲突。我们是否真的需要通过创建树或哈希映射来使解决方案复杂化,如类似问题的链接中评分最高的解决方案中所述?
请指出可以绕过此检查并证明此条件无效的案例。
答案 0 :(得分:0)
当然,如果您说“我们有一个已分类的时间表”,那么解决方案可以在O(n)时间内执行。你引用的问题是假设时间没有排序。
答案 1 :(得分:0)
在链接的答案中,列表约会未排序,因此更复杂的解决方案。你是正确的,如果约会被排序,你可以遍历列表并跟踪到目前为止看到的最新结束时间。
另请注意,对列表进行排序为O(n lg n)
,因此您无法对其进行排序,然后在需要O(n)
解决方案时对其进行遍历。