当前位置:网站首页>力扣 731. 我的日程安排表 II
力扣 731. 我的日程安排表 II
2022-07-19 18:40:00 【冷酷的摸鱼小将】
题目
实现一个 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)
示例
MyCalendar();
MyCalendar.book(10, 20); // returns true
MyCalendar.book(50, 60); // returns true
MyCalendar.book(10, 40); // returns true
MyCalendar.book(5, 15); // returns false
MyCalendar.book(5, 10); // returns true
MyCalendar.book(25, 55); // returns true
解释:
前两个日程安排可以添加至日历中。 第三个日程安排会导致双重预订,但可以添加至日历中。
第四个日程安排活动(5,15)不能添加至日历中,因为它会导致三重预订。
第五个日程安排(5,10)可以添加至日历中,因为它未使用已经双重预订的时间10。
第六个日程安排(25,55)可以添加至日历中,因为时间 [25,40] 将和第三个日程安排双重预订;
时间 [40,50] 将单独预订,时间 [50,55)将和第二个日程安排双重预订。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/my-calendar-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1:模拟
Java实现
class MyCalendarTwo {
List<int[]> book1;
List<int[]> book2;
public MyCalendarTwo() {
book1 = new ArrayList<>(); //一重预定
book2 = new ArrayList<>(); //二重预定
}
public boolean book(int start, int end) {
for (int[] arr : book2) {
int l = arr[0], r = arr[1];
if (start < r && l < end) return false;
}
for (int[] arr : book1) {
int l = arr[0], r = arr[1];
if (start < r && l < end) {
book2.add(new int[]{
Math.max(l, start), Math.min(r, end)});
}
}
book1.add(new int[]{
start, end});
return true;
}
}
边栏推荐
猜你喜欢
[concept] Keming's work resnet+ mental journey [detailed] + solving degradation problems + making the network deeper become a reality
Source insight tips
Compose中的“ViewPager“和Banner
STM32F1与STM32CubeIDE编程实例-BMP280气压温度传感器驱动
日语动词+动词类型+动词活用
Translation of question a of 2020 Asia Pacific mathematical modeling competition
Source Insight使用技巧
CodeBlocks download + interface optimization + create file + common shortcut keys
Pytoch -- model reading and storage
npm run xx 的执行流程
随机推荐
深入了解前后置++、--以及负数取模
kubernetes之HPA
搜索引擎排名对商家的影响大吗?广告情报体现竞争优势
路由器和交换机的区别
golang面试-代码编写题1-14
9.mysql多个sql语句用到同一个具体值的写法
力扣第三题——无重复字符的最长子串
Compose中的“ViewPager“和Banner
"Viewpager" and banner in compose
The inspiration of cognitive nature to me and my application in daily life
Regular expression syntax table
Matter统一的智能家居连接标准,赋能智能设备间本地自动化交互
Special description of random() random function of C (an amazing feature of random function)
Pikachu 漏洞平台练习
uniapp 使用本地存储实现页面间的传值
NextTick 原理分析
剑指 Offer II 014. 字符串中的变位词
取得刚刚添加记录的ID
Translation of question a of 2020 Asia Pacific mathematical modeling competition
银行业数据安全建设专题分析