package com.算法专练.力扣.我的日程安排表I;import java.util.ArrayList;
import java.util.List;/*** @author xnl* @Description:* @date: 2022/7/5   21:35*/
public class Solution {public static void main(String[] args) {Solution solution = new Solution();}}/*** 直接遍历,找区间*/
class MyCalendar {List<int[]> list = new ArrayList<>();public MyCalendar() {list = new ArrayList<>();}/*** 加入的区间不能在任意一个区间里面* @param start* @param end* @return*/public boolean book(int start, int end) {for (int i = 0; i < list.size(); i++){int[] ints = list.get(i);if (start > ints[0] && end > ints[1]){return false;}}list.add(new int[]{start, end});return true;}
}/*** 线段树,CV博主的额答案,线段树不会写*/
class MyCalendar2 {class Node {// ls 和 rs 分别代表当前节点的左右子节点在 tr 的下标// val 代表当前节点有多少数// add 为懒标记int ls, rs, add, val;}int N = (int)1e9, M = 120010, cnt = 1;Node[] tr = new Node[M];private void update (int treeIndex, int left, int right, int l, int r, int v){if (left >= l && right <= r){tr[treeIndex].val += (right - left + 1) * v;tr[treeIndex].add += v;return;}lazyCreate(treeIndex);pushdown(treeIndex, right - left + 1);int mid = (left + right) >> 1;if (l <= mid){update(tr[treeIndex].ls, left,mid , l, r, v);}if (r > mid){update(tr[treeIndex].rs, mid + 1, right, l ,r ,v);}pushup(treeIndex);}private int query(int treeIndex, int left, int right, int l, int r){if (left >= l &&  r >= right){return tr[treeIndex].val;}lazyCreate(treeIndex);pushdown(treeIndex, right - left + 1);int mid = left + right >> 1, ans = 0;if (l <= mid){ans += query(tr[treeIndex].ls, left, mid, l, r);}if (r > mid){ans += query(tr[treeIndex].rs, mid + 1, right, l, r);}return ans;}void lazyCreate(int treeIndex) {if (tr[treeIndex] == null){tr[treeIndex] = new Node();}if (tr[treeIndex].ls == 0){tr[treeIndex].ls = ++cnt;tr[tr[treeIndex].ls] = new Node();}if (tr[treeIndex].rs == 0){tr[treeIndex].rs = ++cnt;tr[tr[treeIndex].rs] = new Node();}}void pushdown(int treeIndex, int len){tr[tr[treeIndex].ls].add += tr[treeIndex].add;tr[tr[treeIndex].rs].add += tr[treeIndex].add;tr[tr[treeIndex].ls].val += (len -len / 2) * tr[treeIndex].add;tr[tr[treeIndex].rs].val += (len / 2) * tr[treeIndex].add;tr[treeIndex].add = 0;}void pushup(int u) {tr[u].val = tr[tr[u].ls].val + tr[tr[u].rs].val;}public boolean book(int start, int end) {if (query(1, 1, N + 1, start + 1, end) > 0){return false;}update(1,1, N + 1, start + 1, end, 1);return true;}
}

力扣:我的日程安排表I相关推荐

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

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

  2. ​力扣解法汇总732-我的日程安排表 III

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

  3. 力扣编程题-解法汇总

    一.力扣链接: 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 备注:以后每个工作日从前往后刷一道题,然后再加一道每日新题.每天两道题. 二.模版: 标题: 力扣解法汇总5-正则表达 ...

  4. 力扣1002.查找常用字符

    力扣 1002. 查找常用字符 本人力扣练习已上传至码云,可互相学习借鉴. 难度-简单 题目: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表 ...

  5. 力扣解题——求根到叶子节点数字之和

    难度:中等 题目:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字. 例如,从根到叶子节点路径 1->2->3 代表数字 123. 计算从根到 ...

  6. 力扣每日一题——独一无二出现的次数

    难度:简单 题目: 给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数. 如果每个数的出现次数都是独一无二的,就返回 true:否则返回 false. 示例 1: 输入:arr = [1,2 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  8. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

最新文章

  1. 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~
  2. 从mysql数据库中读取二进制文件_数据库技术之在MYSQL数据库中如何存取二进制文件...
  3. WIN5语音ic注意事项
  4. latex箭头表示符号
  5. (转)swc与swf的区别
  6. java猜单词游戏_9 java基础综合编程练习---猜单词游戏
  7. 手机听筒被灰尘堵塞了如何清洗?
  8. IT测试时准确数据的技巧(IT总结之三去除旧数据)
  9. [转载] python staticmethod有什么意义_Python 中的 classmethod 和 staticmethod 有什么具体用途
  10. Q124:PBRT-V3,“路径追踪”积分器(14.5章节)
  11. PTA:6-2顺序表操作集(20分)
  12. Atitit.Atiposter 发帖机 信息发布器 v7 q516
  13. Java容器---List
  14. Python数据挖掘框架
  15. 线性函数、非线性函数与线性回归的区别
  16. mysql视频怎么存_学习怎样把视频文件存储到mysql数据库
  17. python实现模拟身份验证服务器综合系统设计
  18. 构建linux图形安装程序,Scientific Linux 5.5 图形安装教程
  19. [4G5G基础学习]:流程 - 4G LTE 核心网的Attach流程
  20. 凛冬至,这一杯互联网咖啡能热多久?

热门文章

  1. 济南计算机机械工程学校,济南电子机械工程学校2021年招生简章
  2. ASP实现自动发邮件
  3. 网友曝西安一大学瞒学生群体盗办信用卡
  4. web安全问题-1.安全世界观
  5. vue-devtools\shells\chrome 错误 无法为内容脚本加载 JavaScript“build/hook.js”。 无法加载清单。
  6. 社区发现之标签传播算法(LPA)
  7. 请求因HTTP状态401失败:Unauthorized 的原因?
  8. Java单例模式中双重检查锁的问题
  9. 【python爬虫专项(28)】链家二手房源数据采集1(分页信息采集)
  10. mysql5.0.7中文乱码_PHP+MySQL5.0中文乱码解决方法