当前位置:网站首页>leetcode-每日一题731. 我的日程安排表 II
leetcode-每日一题731. 我的日程安排表 II
2022-07-31 05:10:00 【lin钟一】
题目链接:https://leetcode.cn/problems/my-calendar-ii/
孪生弟弟题 729. 我的日程安排表 I:https://leetcode.cn/problems/my-calendar-i/
思路
方法一、直接遍历
直接想法
题目需要我们判断在重复的预定时间里,有三重预定的返回false,那我们可以定义一个pair结构体用来表示时间段,MyCalendarTwo结构体用来存成功预定的时间段booked切片,和有重复预定的时间段overlaps切片,overlaps切片用来判断新进的时间段是否跟overlaps有重合预定的情况,若有则返回false,没有则true
代码示例
type pair struct{
start, end int }
type MyCalendarTwo struct{
booked, overlaps []pair }
func Constructor() MyCalendarTwo {
return MyCalendarTwo{
}
}
func (c *MyCalendarTwo) Book(start, end int) bool {
for _, p := range c.overlaps {
if p.start < end && start < p.end {
return false
}
}
for _, p := range c.booked {
if p.start < end && start < p.end {
c.overlaps = append(c.overlaps, pair{
max(p.start, start), min(p.end, end)})
}
}
c.booked = append(c.booked, pair{
start, end})
return true
}
func min(a, b int) int {
if a > b {
return b
}
return a
}
func max(a, b int) int {
if b > a {
return b
}
return a
}
复杂度分析
时间复杂度:O(n2)其中 n 表示日程安排的数量。由于每次在进行预定时,都需要遍历所有已经预定的行程安排。
空间复杂度:O(n),其中 n 表示日程安排的数量。需要保存所有已经预定的行程。
边栏推荐
猜你喜欢
面试Redis 高可靠性|主从模式、哨兵模式、Cluster集群模式
MySQL (updating)
剑指offer专项突击版 ---第 5 天
剑指offer专项突击版 --- 第 3 天
Interviewer: If the order is not paid within 30 minutes, it will be automatically canceled. How to do this?
Object Detection Study Notes
剑指offer专项突击版 ---- 第2天
一文了解大厂的DDD领域驱动设计
Quickly master concurrent programming --- the basics
Mysql——字符串函数
随机推荐
三次握手与四次挥手
第7章 网络层第1次练习题答案(第三版)
16 【打包上线 图片懒加载】
Goodbye to the cumbersome Excel, mastering data analysis and processing technology depends on it
【一起学Rust】Rust学习前准备——注释和格式化输出
Distributed Transactions - Introduction to Distributed Transactions, Distributed Transaction Framework Seata (AT Mode, Tcc Mode, Tcc Vs AT), Distributed Transactions - MQ
面试官问我TCP三次握手和四次挥手,我真的是
C语言实验一 熟悉C程序的环境
uni-app进阶之生命周期【day8】
数据库上机实验6 数据库完整性
详解扫雷游戏(C语言)
MySQL (updating)
剑指offer基础版 --- 第24天
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
剑指offer基础版 ----第31天
Qt Creator + CMake 运行调试总会自动 build 所有目标
剑指offer专项突击版 ---- 第2天
uni-app进阶之创建组件/原生渲染【day9】
Redis 事务学习有感
初涉C语言