leetcode-每日一题731. 我的日程安排表 II
题目链接: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相关推荐
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
- 【LeetCode每日一题】——109.有序链表转换二叉搜索树
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...
- leetcode每日一题·救生艇问题(Python)
leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...
- LeetCode每日一题——904. 水果成篮
LeetCode每日一题系列 题目:904. 水果成篮 难度:普通 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 你正在探访一家农场,农场从左到右种植了一排果树.这些树用一个整 ...
- LeetCode每日一题打卡组队监督!刷题群!
近 2000 人已经加入共同刷题啦! 群友每天都会在群里给大家讲解算法题 每周日「负雪明烛」组织直播讲题 我相信来看我博客的大部分人都是通过LeetCode刷题过来的.最近发现LeetCode中文网站 ...
最新文章
- linux打开 root .m2,小辣椒M2 (LA-M2)获取ROOT权限教程,新手root必看
- 基于phathomjs token 不定时无响应问题排查
- 【PAT甲级 大整数BigInteger】1065 A+B and C (64bit) (20 分) Java 全部AC
- 【转】Mac本地生成SSH Key 的方法
- 大学生应当趁早谋划未来
- 锐炬显卡可以linux吗,Intel Broadwell桌面CPU性能测试:Iris Pro 6200核显无敌了
- 法兰克机器人外部自动_行业数据 | 服务机器人销售额创新纪录:全球增长32
- asp.net优化方案
- 浅析那些带着“主角光环“的泰坦尼克号幸存者(下)
- tf卡可以自己裁剪成nm卡_[Vivado 2020.1]ZYNQ7020折腾之路(四)之荔枝糖Hex固化程序到TF卡...
- ETL服务器安装手册
- 超图(Hypergraph)概念理解
- 值得推荐的C/C++框架和库
- linux自动升级关闭,Ubuntu关闭内核自动更新
- Unity客户端开发面试题记录
- 【分享】推荐一些不错的计算机书籍
- Fiddler / Charles - 夜神模拟器证书安装App抓包
- 高手在民间——从WiMAX看自主创新
- 红米3s运行linux,小米红米3S 3X(Redmi 3S)刷机教程,看教程刷机
- 视频聊天软件的技术实现