题目

剑指 Offer II 058. 日程表

思路

假设现在已经有一堆互不冲突的日程了,此时需要新增一个日程k,其开始时间为start,结束时间为end,怎么判断是否和已有的日程冲突呢?

先考虑所有开始时间小于等于start的日程,再考虑所有开始时间大于等于start的日程

  • 开始时间小于等于start的日程,找出这里面开始时间最大的那个日程s,如果

    • s的结束时间大于start:s和k重合
    • s的结束时间小于等于start:则所有开始时间小于等于start的日程中,没有和k有重合的。因为最大的那个日程都和k没有冲突,其他较小的日程肯定也和k没有冲突
  • 开始时间大于等于start的日程,找出这里面开始时间最小的那个日程s

    • s的开始时间小于end:s和k重合
    • s的开始时间大于等于end::则所有开始时间大于等于start的日程中,没有和k重合的

如果k和这两部分的日程都没有冲突,就将k加入日程表中

那怎么找出所有大于中的最小值,和所有小于中的最大值呢?用TreeMap

代码

class MyCalendar {private TreeMap<Integer,Integer> map = new TreeMap<>();public MyCalendar() {}public boolean book(int start, int end) {Map.Entry<Integer, Integer> floorEntry = map.floorEntry(start);if (floorEntry != null && floorEntry.getValue() > start) {return false;}Map.Entry<Integer, Integer> ceilingEntry = map.ceilingEntry(start);if (ceilingEntry != null &&ceilingEntry.getKey() < end) {return false;}map.put(start,end);return true;}
}

剑指Offer专项突破版(58)—— 日程表相关推荐

  1. LeetCode刷题 _「剑指 Offer]专项突破版

    第01天 整数 剑指 Offer II 001. 整数除法 class Solution:# 时间复杂度:O(logn), 空间复杂度:O(1)def divideCore(self, dividen ...

  2. 剑指offer 专项突破版 74、合并区间

    题目链接 思路 注意合并区间的规则是,对于有重合的区间直接合并(重合意味着某一个区间的头部在另一个区间之中) 所以我们可以先把区间按照区间头排序,然后再挨个判断是否重合~ 注意具体的写法 class ...

  3. 剑指offer 专项突破版 78、合并排序链表

    题目链接 思路 最初的思路是上一题既然实现了归并两个链表,那么我们可以挨个归并~ 归并n-1次就可以,但是这样时间复杂度为O(k²n) class Solution {public ListNode ...

  4. 剑指offer 专项突破版 73、狒狒吃香蕉

    题目链接 思路 这个也是范围内的查找,一开始可以确定狒狒的速度区间应该是[1,maxVal],但是有两个细节需要注意 如何通过piles数组和speed计算时间 result += (pile + s ...

  5. 剑指offer专项突破版

    面试题1:整除除法 力扣连接:https://leetcode-cn.com/problems/xoh6Oh/submissions/ 题目描述 输入两个int型整数,它们进行除法计算并返回商,要求不 ...

  6. 剑指offer 专项突破版 79、所有子集

    题目链接 思路一:回溯 对于这种可以分为若干步,每一步有很多选择的题目非常适合用回溯法来做. 具体的方式为写一个helper函数,参数为当前的结果集合subset,当前选择的数字的索引index. 首 ...

  7. 剑指offer专项突击版第24天

    剑指 Offer II 071. 按权重生成随机数 二分+前缀和 看了几遍题目愣是没看明白,最后看的题解明白了! 题意就是按照 w[i]w[i]w[i] 的权重选取下标 iii,这个问题可以转化成:所 ...

  8. 剑指 Offer II 022. 链表中环的入口节点(力扣剑指Offer专项突击版——链表2)

    题目 给定一个链表,返回链表开始入环的第一个节点. 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点.如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 po ...

  9. 剑指Offer Ⅱ 005.单词长度的最大乘积 (力扣剑指Offer专项突击版——整数_5)

    题目 给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值.假设字符串中只包含英语的小写字母.如果没有不包含相同字符的一 ...

最新文章

  1. 【小米3使用经验】小米3联通版 miui7.2.11稳定版刷机
  2. (win10 64位系统中)Visual Studio 2015+OpenCV 3.3.0环境搭建,100%成功
  3. 仿OpenStack开发云计算管理软件”--熟悉开发环境
  4. Java-自增自减运算符 初始Math类
  5. ug中模型不见了怎么办_关于UG参数化建模的定义
  6. java 与c des_Java和C/C++进行DES/AES密文传输
  7. android support v4 viewstub,Android 控件ViewStub
  8. 微信公众号-自定义菜单的创建
  9. springboot15 集成Druid(德鲁伊)
  10. C99标准的新特性(相对于Ansi C)
  11. 电子海图数据购买、安装、更新及使用注意事项
  12. 统计学——线性回归决定系数R2
  13. 百钱买小鸡/*公鸡5文钱1只,母鸡三文钱一只,小鸡一文钱三只。现在用100文钱共买了100只鸡,问这100只鸡中,公鸡,母鸡,小鸡各是多少只?
  14. Redis统计用户访问量
  15. B Bitwise Exclusive-OR Sequence
  16. 测试2年6.5K,每天“911”,我的心酸经历只有我自己知道···
  17. 解Invalid character found in the request target.
  18. linux搭建raid5命令,命令行操作RAID5
  19. 跳跃游戏2(求最少跳跃次数)Python解法
  20. My future of programming

热门文章

  1. vue 的生命周期函数
  2. 海淀区首批限价商品房公开摇号,共有2062户家庭参与
  3. 从 OLAP 到指标中台 SaaS,关键指标赋能业务管理
  4. php 跳转时传递post值,PHP重定向与POST数据
  5. 具有“高薪缘”的行业和职位发布
  6. Oracle导入数据时报错解决方法
  7. 【Linux】【Vim操作指南2】| vim分屏快捷操作
  8. 鼠标悬浮图片放大特效
  9. LAMP源码安装图文详解(超详细)
  10. JavaWeb入门---参考狂神说