时间重叠

背景

前几天有一个任务是开发一个小型的排课系统,就是手动的输入一条一条课程信息。然后存入数据库中,项目其实很简单。在开发的过程中有一个值得思考的地方就是如何判断插入的新课程信息不会与别的课程重叠。例如,李老师在周一至周三都有课程安排,我如果插入的课程信息是安排李老师在周二到周四上课就会产生时间冲突。

解决思路

首先想到的是 #蛮力比较法#,把新增课程信息的开始时间和结束时间拿到数据库进行逐个比较,如果当前课程的开始时间在某一课程开始时间和结束时间之间,就会判定此课程不能安排。当然,对于结束时间也是如此,时间复杂度为O(n)也是可以接受的。
所以开始第二种方法:
在程序一开始,把数据库的数据读入到一个字典中,实现开始时间与结束时间的映射,同时对所有的时间进行排序,然后一次进栈,利用括号匹配的方法来匹配开始时间和结束时间,如果栈中的元素数量大于2,就表示时间有重叠。

总结

第二种方法虽然不是最优解,带式带来了优化的可能性。例如将列表和字典常驻内存(方法好笨啊哈哈哈哈哈啊哈),在时间复杂度方面会比第一个蛮力法高(主要是排序方法的选择上影响比较大)。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这是最近打磨出来的一个小技巧,也是之前思考时间概念时,迸发出来的一个小感悟。 干货总结语:穿越到现在的未来的自己,...
    果大喵喵阅读 732评论 0 0
  • 把一份时间重叠使用,一生就比其他人长出许多。比如老师录制授课的视频,作者写的书等等,他们用同样一份时间,可以卖出无...
    败笔狂生阅读 737评论 0 1
  • 困吗 困 眼都睁不开了 那还不睡 划呀划的 不愿就这样睡去 只想找到些许关于你的信息 酸甜苦辣 哀怒悲喜 幸福或...
    风铃缥缈阅读 349评论 6 13
  • 《布拉格,以足球的名义》之《初见》 两个月前,当领导跟我说起出访担任随团翻译时,我永远也想不到会发生什么,会对我有...
    劈柴捌哥阅读 314评论 0 0
  • 屈源芝妈妈亲子日记第397天 5月26日,星期六,阴有小雨 早上六点多,女儿突然起床说肚子痛。不一会儿,便跑去厕所...
    月儿贝贝阅读 414评论 0 1