729. 我的日程安排表 I

实现一个 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)

示例 1:

MyCalendar();

MyCalendar.book(10, 20); // returns true

MyCalendar.book(15, 25); // returns false

MyCalendar.book(20, 30); // returns true

解释:

第一个日程安排可以添加到日历中. 第二个日程安排不能添加到日历中,因为时间 15 已经被第一个日程安排预定了。

第三个日程安排可以添加到日历中,因为第一个日程安排并不包含时间 20 。

说明:

每个测试用例,调用 MyCalendar.book 函数最多不超过 100次。

调用函数 MyCalendar.book(start, end)时, start 和 end 的取值范围为 [0, 10^9]。

class TNode{
int start;
int end;
TNode left;
TNode right; TNode(int start, int end){
this.start = start;
this.end = end;
} boolean insert (TNode node){
if (node.end <= this.start){
if (this.left == null){
this.left = node;
return true;
}
return this.left.insert(node);
}
else if (node.start >= this.end){
if (this.right == null){
this.right = node;
return true;
}
return this.right.insert(node);
}
else{
return false;
}
}
} class MyCalendar {
TNode root;
public MyCalendar() {
root = null;
} public boolean book(int start, int end) {
if (root == null){
root = new TNode(start, end);
return true;
}
return root.insert(new TNode(start, end));
}
} /**
* Your MyCalendar object will be instantiated and called as such:
* MyCalendar obj = new MyCalendar();
* boolean param_1 = obj.book(start,end);
*/

最新文章

  1. LogStash-2.4.0自定义区域信息插件-ISP
  2. 【转】MySQL批量SQL插入各种性能优化
  3. 【BZOJ3123】森林(主席树,启发式合并)
  4. selenium总结篇,常见方法和页面元素的操作【转】
  5. SQL Server 中LEN函数的问题
  6. wcf service library
  7. CSS3 keyframes动画实现弹跳效果
  8. Mysql binlog日志解析
  9. CC++初学者编程教程(1) Visual Stduio2010开发环境搭建
  10. jvm-监控指令-jps
  11. 记一次亲身踩过的hibernate的bug
  12. Redis学习笔记~分布锁的使用
  13. python阅读目录
  14. [福大软工] Z班 第12次成绩排行榜
  15. 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别
  16. Hadoop(二) HADOOP集群搭建
  17. solr(二) : 整合ik-analyzer
  18. 【Leetcode】292. Nim游戏
  19. 【SpringBoot整合Elasticsearch】SpringBoot整合ElasticSearch
  20. Haskell语言学习笔记(67)Gtk2Hs

热门文章

  1. Directory类和DirectoryInfo类
  2. [codeforces-542-C]YY?
  3. EOS基础全家桶(十一)智能合约IDE-EOS_Studio
  4. Oracle SQLPlus导出数据到csv文件
  5. 【Socket编程】【第一节】【Socket基本原理和套接字】
  6. OpenCv 学习安装(一)
  7. chrome &quot;items hidden by filters&quot;
  8. System.Web.mail ----虚拟发件人发送邮件
  9. Vue刷新页面的三种方式
  10. Linux——vim操作