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相关推荐

  1. [LeetCode]731. 我的日程安排表 II

    题目 731. 我的日程安排表 II 731. 我的日程安排表 II 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排.MyCal ...

  2. LeetCode 731. 我的日程安排表 II

    731. 我的日程安排表 II [分析]用两个TreeMap分别维护一重区间和二重区间,对于新加入的区间先检查是否在二重区间,不在的话循环检查一重区间的交集,把交集纳入二重区间,同时删除查找到的已经在 ...

  3. leetcode-每日一题731. 我的日程安排表 II

    题目链接:https://leetcode.cn/problems/my-calendar-ii/ 孪生弟弟题 729. 我的日程安排表 I:https://leetcode.cn/problems/ ...

  4. 【数据结构与算法】之深入解析“我的日程安排表II”的求解思路与算法示例

    一.题目要求 实现一个 MyCalendar 类来存放你的日程安排,如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排. MyCalendar 有一个 book(int start, i ...

  5. 力扣 731. 我的日程安排表 II

    题目来源:https://leetcode.cn/problems/my-calendar-ii/ 大致题意: 设计一个日程类 MyCalendar,包含以下功能: 有一个 book(int star ...

  6. ​力扣解法汇总731-我的日程安排表 II

    目录链接: 力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描 ...

  7. 我的日程安排表I II III

    我的日程安排表I 我的日程安排表II 我的日程安排表III 转载做题方法! 今天介绍的方法叫插旗法,其实我最早是在253. 会议室Ⅱ中介绍过,但是由于很多同学不是会员,刚好今天又看到这种类型的题,所以 ...

  8. LeetCode 732. 我的日程安排表 III(差分思想)

    文章目录 1. 题目 2. 解题 1. 题目 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int ...

  9. LeetCode 729. 我的日程安排表 I(set 二分查找)

    文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...

  10. java人员安排表_Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)

    732. 我的日程安排表 III 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int end)方法 ...

最新文章

  1. 从CES Asia 2017看智能家居的发展趋势
  2. SAP SD基础知识之自动信用控制
  3. SUCEFUL:将ATM变得“惟命是从”的新型恶意程序
  4. Go 语言编程 — gorm 的数据完整性约束
  5. 优化网站性能的35条规则
  6. 这些贷款冷知识你知道多少?
  7. Redis作者摊上事了:多人要求修改Redis主从复制术语master/slave
  8. 【遥感数字图像处理】实验:遥感图像显示与数据输入/输出(Erdas版)
  9. 中芯国际人事变动:蒋尚义回归 传梁孟松要走
  10. Ubuntu 12.04下NFS安装配置
  11. shell基础--1
  12. bat之ping操作
  13. allegro中Externally Determined Violation错误标记去掉的skill
  14. 2021大纲新增词汇
  15. Git 克隆大型仓库失败解决方法
  16. KT148A语音芯片SOP外挂功放芯片8002D的说明_V1
  17. linux搭建ftps(vsftpd),java代码测试上传下载
  18. 数据库 Database
  19. Qt实现Qchart的打印和打印预览的几种方法
  20. 第5次作业+105032014124+高小娟

热门文章

  1. CocosCreator快速接入bugly
  2. 如何打造高质量的网页内容呢?
  3. Win10 桌面图标出现空文件夹的删除及桌面图标排列问题
  4. 计算机专业考研2021,2021考研:计算机专业考研方向有哪些?
  5. 使用FFmpeg 编解码 FLV的HEVC(H265)格式的视频
  6. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day3)
  7. 如何解读羊毛出在了猪身上的保理业务?
  8. ssh 工具 socket 10106 连接不上
  9. VC、PE和天使投资的解释与区别?
  10. ‘mvn‘不是内部或外部命令