java 日程表_Java实现 LeetCode 729 我的日程安排表 I(二叉树)
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);
*/
java 日程表_Java实现 LeetCode 729 我的日程安排表 I(二叉树)相关推荐
- java人员安排表_Java实现 LeetCode 732 我的日程安排表 III(暴力 || 二叉树)
732. 我的日程安排表 III 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int end)方法 ...
- LeetCode 729. 我的日程安排表 I 02
1217. 玩筹码 有 n 个筹码.第 i 个筹码的位置是 position[i] . 我们需要把所有筹码移到同一个位置.在一步中,我们可以将第 i 个筹码的位置从 position[i] 改变为: ...
- [LeetCode]729. 我的日程安排表 I
729. 我的日程安排表 I 题目 729. 我的日程安排表 I 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的日程安排不会造成 重复预订 ,则可以存储这个新的日程安排.当两个日程 ...
- LeetCode 729. 我的日程安排表 I
729. 我的日程安排表 I [有序集合]先看区间的范围达到10^9,因此不能通过start + 1,end - 1这种的差分数组来表示是否已经被覆盖.又因为这是在线查询(查询是动态的,并不是所有区间 ...
- LeetCode 729. 我的日程安排表 I(set 二分查找)
文章目录 1. 题目 2. 解题 2.1 set 二分查找 2.2 差分思想 1. 题目 实现一个 MyCalendar 类来存放你的日程安排.如果要添加的时间内没有其他安排,则可以存储这个新的日程安 ...
- java 汉明距离_Java实现 LeetCode 461 汉明距离
461. 汉明距离 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目. 给出两个整数 x 和 y,计算它们之间的汉明距离. 注意: 0 ≤ x, y < 231. 示例: 输入 ...
- 装鸡蛋的鞋子java代码_Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)...
887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...
- LeetCode 732. 我的日程安排表 III(差分思想)
文章目录 1. 题目 2. 解题 1. 题目 实现一个 MyCalendar 类来存放你的日程安排,你可以一直添加新的日程安排. MyCalendar 有一个 book(int start, int ...
- 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇
马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...
- 基于Java日程表系统的设计与实现
基于Java日程表系统的设计与实现 编写语言是Java Swing,使用Mybatis框架操作数据库.部分界面效果图如下: 登录界面: 用户在没有账号之前,通过输入用户信息(用户ID,用户呢称,性别, ...
最新文章
- 欧拉角与四元数互转,及四元数slerp球面线性插值算法
- python小工具封装_python接口自动化(二)——封装需要用到的工具类
- 什么时候使用临时表?
- EBS服务重启脚本(应用和数据库)
- loadrunner基础知识问答(转)
- Eclipse 中 Maven 项目默认JDK版本为1.5 的解决方法
- 为什么阿里不收购OFO小黄车,反而让滴滴抢了先机?
- android 强制打开gps定位_Android开发之android_gps定位服务简单实现
- Topcoder参赛入门
- linux的密码重置命令
- 诡异!意识何以意识到意识自身?道翰天琼认知智能机器人API接口平台为您揭秘。
- 明日之后android和ios,明日之后安卓ios互通区有哪些?ios安卓混服区详细介绍
- 玩转星际争霸局部战斗 —— QMIX
- 室内定位技术及机场方案建议
- 成都中忻嘉业:提高抖音短视频播放量的三个小技巧
- 蓝牙认证,蓝牙BQB认证,蓝牙BQB测试内容,蓝牙BQB认证多少钱?蓝牙BQB认证流程
- 复变函数 —— 0. 连接复数与三角函数的欧拉公式
- MATLAB中的set函数
- html中根据屏幕大小变化的单位,根据浏览器窗口大小的自适应 单位
- xx公司网站建设方案
热门文章
- Vue多个元素的过渡
- win10计算机升级系统,win10系统升级更新方法
- ValueError: Cannot feed value of shape (100, 160) for Tensor 'Placeholder:0', which has shape '(?,
- 德国AI“算个球”:西班牙是冠军,只要别让德国进八强(严谨推理)
- 专访阿里云褚霸等--挖掘数据库核心价值
- C# XmlHelper
- 图形学人物简史:两位图灵奖与奥斯卡得主的图形学研究往事
- 论文 计算机教育教学能力,高校计算机教师应具备的能力和培养的方向
- SecureCRT中文乱码-显示和复制和粘贴乱码解决办法
- 中国电信计算机类校园招聘笔试题目,中国电信集团2019校园招聘笔试真题(计算机技术类-A卷)(精选).doc...