线段树解决729我的日程安排表I
发布日期:2021-06-29 12:29:22
浏览次数:2
分类:技术文章
本文共 1755 字,大约阅读时间需要 5 分钟。
这个题主要是学习线段树的使用:
class MyCalendar { // 线段树的根 private SegmentTreeNode root; /** * 线段树结构体 */ private static class SegmentTreeNode { int start;// 时间开始区间 int end;// 时间结束区间 SegmentTreeNode left;// 区间左孩子 SegmentTreeNode right;// 区间右孩子 SegmentTreeNode(int start,int end){ this.start = start; this.end = end; } } public MyCalendar() { root = new SegmentTreeNode(0,0); } public boolean book(int start, int end) { return updateSegment(root,start,end); } /** * 更新线段树节点 * @param root 线段树节点 * @param start 新插入的开始时间 * @param end 新插入的结束时间 * @return 是否合法 */ private boolean updateSegment(SegmentTreeNode root,int start,int end){ // 新节点,要么只能全在node.start往左,要么只能全在node.end往右 SegmentTreeNode node = root; while (true){ // 因为start,end是前闭后开区间,所以end可以取等号 if (end <= node.start){ // 左子树为空,表示可以添加 if (node.left == null){ node.left = new SegmentTreeNode(start,end); return true; } // 进入左子树线段树 node = node.left; }else if (start >= node.end){ // 右子树为空,表示可以添加 if (node.right == null){ node.right = new SegmentTreeNode(start, end); return true; } // 进入右子树的线段树 node = node.right; }else { // start或end在[node.start,node.end)中,产生了重复预定 return false; } } }}/** * Your MyCalendar object will be instantiated and called as such: * MyCalendar obj = new MyCalendar(); * boolean param_1 = obj.book(start,end); */
转载地址:https://bupt-xbz.blog.csdn.net/article/details/112557066 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月18日 07时05分47秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
docker-compose 安装
2019-04-29
crontab 定时任务
2019-04-29
查看docker veth pair与宿主机上网卡的对应关系
2019-04-29
使用 GitLab CI 进行持续集成的一些踩坑
2019-04-29
企业云盘给贸易业带来新的效益
2019-04-29
Linux入门常用命令
2019-04-29
Spring整理
2019-04-29
SpringMvc加强
2019-04-29
初识Vue全家桶 Nuxt.js(一)
2019-04-29
基本路由及动态路由(二)
2019-04-29
视图:默认模板+默认布局(自定义布局)+nuxt.js页面(三)
2019-04-29
基于nuxt下asyncData,fetch发送axios请求(四)
2019-04-29
插件机制+自定义axios(五)
2019-04-29
Redis的学习之路
2019-04-29
Windows下Redies+GUI安装,使用Jedis与spring boot 整合
2019-04-29
Windows创建本地版本库(1)
2019-04-29
基于java的酒店管理系统的设计与实现
2019-04-29
基于WEB的仓库管理系统的设计与实现
2019-04-29
基于java的web聊天系统
2019-04-29