我的日程安排表 II
731. 我的日程安排表 II
实现一个 MyCalendar 类来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。
MyCalendar 有一个 book(int start, int end)方法。它意味着在 start 到 end 时间内增加一个日程安排,注意,这里的时间是半开区间,即 [start, end), 实数 x 的范围为, start <= x < end。
当三个日程安排有一些时间上的交叉时(例如三个日程安排都在同一时间内),就会产生三重预订。
每次调用 MyCalendar.book方法时,如果可以将日程安排成功添加到日历中而不会导致三重预订,返回 true。否则,返回 false 并且不要将该日程安排添加到日历中。
请按照以下步骤调用MyCalendar 类: MyCalendar cal = new MyCalendar(); MyCalendar.book(start, end)
示例:
MyCalendar();
MyCalendar.book(10, 20); // returns true
MyCalendar.book(50, 60); // returns true
MyCalendar.book(10, 40); // returns true
MyCalendar.book(5, 15); // returns false
MyCalendar.book(5, 10); // returns true
MyCalendar.book(25, 55); // returns true
解释:
前两个日程安排可以添加至日历中。 第三个日程安排会导致双重预订,但可以添加至日历中。
第四个日程安排活动(5,15)不能添加至日历中,因为它会导致三重预订。
第五个日程安排(5,10)可以添加至日历中,因为它未使用已经双重预订的时间10。
第六个日程安排(25,55)可以添加至日历中,因为时间 [25,40] 将和第三个日程安排双重预订;
时间 [40,50] 将单独预订,时间 [50,55)将和第二个日程安排双重预订。
我这个解法应该是最快的一个解法,了,但是空间开销无法通过
typedef struct {int a[100000];} MyCalendarTwo;MyCalendarTwo* myCalendarTwoCreate() {MyCalendarTwo * m=(MyCalendarTwo *)malloc(sizeof(MyCalendarTwo));int i=0;for(i=0;i<100000;i++){m->a[i]=0;}return m;}bool myCalendarTwoBook(MyCalendarTwo* obj, int start, int end) {int i=0;int j;for(i=start;i<end;i++){obj->a[i]++;if(obj->a[i]>=3){for(j=i;j>=start;j--){obj->a[j]--;}return false;}}return true;}void myCalendarTwoFree(MyCalendarTwo* obj) {}/*** Your MyCalendarTwo struct will be instantiated and called as such:* MyCalendarTwo* obj = myCalendarTwoCreate();* bool param_1 = myCalendarTwoBook(obj, start, end);* myCalendarTwoFree(obj);
*/
我的日程安排表 II相关推荐
- [LeetCode]731. 我的日程安排表 II
题目 731. 我的日程安排表 II 731. 我的日程安排表 II 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排.MyCal ...
- LeetCode 731. 我的日程安排表 II
731. 我的日程安排表 II [分析]用两个TreeMap分别维护一重区间和二重区间,对于新加入的区间先检查是否在二重区间,不在的话循环检查一重区间的交集,把交集纳入二重区间,同时删除查找到的已经在 ...
- leetcode-每日一题731. 我的日程安排表 II
题目链接:https://leetcode.cn/problems/my-calendar-ii/ 孪生弟弟题 729. 我的日程安排表 I:https://leetcode.cn/problems/ ...
- 【数据结构与算法】之深入解析“我的日程安排表II”的求解思路与算法示例
一.题目要求 实现一个 MyCalendar 类来存放你的日程安排,如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排. MyCalendar 有一个 book(int start, i ...
- 力扣 731. 我的日程安排表 II
题目来源:https://leetcode.cn/problems/my-calendar-ii/ 大致题意: 设计一个日程类 MyCalendar,包含以下功能: 有一个 book(int star ...
- 力扣解法汇总731-我的日程安排表 II
目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...
- 我的日程安排表I II III
我的日程安排表I 我的日程安排表II 我的日程安排表III 转载做题方法! 今天介绍的方法叫插旗法,其实我最早是在253. 会议室Ⅱ中介绍过,但是由于很多同学不是会员,刚好今天又看到这种类型的题,所以 ...
- LeetCode 732. 我的日程安排表 III(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int ...
- LeetCode 729. 我的日程安排表 I(set 二分查找)
文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...
- java人员安排表_Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)
732. 我的日程安排表 III 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int end)方法 ...
最新文章
- 从CES Asia 2017看智能家居的发展趋势
- SAP SD基础知识之自动信用控制
- SUCEFUL:将ATM变得“惟命是从”的新型恶意程序
- Go 语言编程 — gorm 的数据完整性约束
- 优化网站性能的35条规则
- 这些贷款冷知识你知道多少?
- Redis作者摊上事了:多人要求修改Redis主从复制术语master/slave
- 【遥感数字图像处理】实验:遥感图像显示与数据输入/输出(Erdas版)
- 中芯国际人事变动:蒋尚义回归 传梁孟松要走
- Ubuntu 12.04下NFS安装配置
- shell基础--1
- bat之ping操作
- allegro中Externally Determined Violation错误标记去掉的skill
- 2021大纲新增词汇
- Git 克隆大型仓库失败解决方法
- KT148A语音芯片SOP外挂功放芯片8002D的说明_V1
- linux搭建ftps(vsftpd),java代码测试上传下载
- 数据库 Database
- Qt实现Qchart的打印和打印预览的几种方法
- 第5次作业+105032014124+高小娟
热门文章
- CocosCreator快速接入bugly
- 如何打造高质量的网页内容呢?
- Win10 桌面图标出现空文件夹的删除及桌面图标排列问题
- 计算机专业考研2021,2021考研:计算机专业考研方向有哪些?
- 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
- 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day3)
- 如何解读羊毛出在了猪身上的保理业务?
- ssh 工具 socket 10106 连接不上
- VC、PE和天使投资的解释与区别?
- ‘mvn‘不是内部或外部命令