题目链接: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 表示日程安排的数量。需要保存所有已经预定的行程。

leetcode-每日一题731. 我的日程安排表 II相关推荐

  1. leetcode每日刷题计划-简单篇day8

    leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...

  2. Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)

    思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...

  3. 【LeetCode每日一题】1723. 完成所有工作的最短时间

    [LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...

  4. leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用

    leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...

  5. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  6. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  7. leetcode每日一题·救生艇问题(Python)

    leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...

  8. LeetCode每日一题——904. 水果成篮

    LeetCode每日一题系列 题目:904. 水果成篮 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整 ...

  9. LeetCode每日一题打卡组队监督!刷题群!

    近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...

最新文章

  1. linux打开 root .m2,小辣椒M2 (LA-M2)获取ROOT权限教程,新手root必看
  2. 基于phathomjs token 不定时无响应问题排查
  3. 【PAT甲级 大整数BigInteger】1065 A+B and C (64bit) (20 分) Java 全部AC
  4. 【转】Mac本地生成SSH Key 的方法
  5. 大学生应当趁早谋划未来
  6. 锐炬显卡可以linux吗,Intel Broadwell桌面CPU性能测试:Iris Pro 6200核显无敌了
  7. 法兰克机器人外部自动_行业数据 | 服务机器人销售额创新纪录:全球增长32
  8. asp.net优化方案
  9. 浅析那些带着“主角光环“的泰坦尼克号幸存者(下)
  10. tf卡可以自己裁剪成nm卡_[Vivado 2020.1]ZYNQ7020折腾之路(四)之荔枝糖Hex固化程序到TF卡...
  11. ETL服务器安装手册
  12. 超图(Hypergraph)概念理解
  13. 值得推荐的C/C++框架和库
  14. linux自动升级关闭,Ubuntu关闭内核自动更新
  15. Unity客户端开发面试题记录
  16. 【分享】推荐一些不错的计算机书籍
  17. Fiddler / Charles - 夜神模拟器证书安装App抓包
  18. 高手在民间——从WiMAX看自主创新
  19. 红米3s运行linux,小米红米3S 3X(Redmi 3S)刷机教程,看教程刷机
  20. 视频聊天软件的技术实现

热门文章

  1. 王永良-空间谱估计理论与算法
  2. 小程序排名规则及搜索算法
  3. 青软实训.NET学习笔记(2)
  4. Java多线程【状态与安全问题】
  5. 2023年安装包制作工具有哪些?主流易用软件打包工具推荐
  6. excel模板文件下载
  7. ROS机器人调试笔记
  8. 函数、极限与连续-一元微积分
  9. hmi中的宏指令是c语言,HMI中的宏指令编程中的语句执行顺序是?
  10. 压缩包忘记密码怎么解压