当前位置:网站首页>LeetCode 731. My schedule II
LeetCode 731. My schedule II
2022-07-06 06:23:00 【Sasakihaise_】

【 Interval splitting and merging 】 I think it's complicated , Split the double overlapping interval , If you want to split an interval, you should consider the same endpoint .
class MyCalendarTwo {
// Splitting and merging of double ordered sets 1:27 2:47
TreeMap<Integer, Integer> m1 = new TreeMap();
TreeMap<Integer, Integer> m2 = new TreeMap();
public MyCalendarTwo() {
}
public boolean book(int start, int end) {
Integer k2 = m2.lowerKey(end);
if (k2 != null) {
if (m2.get(k2) > start) {
return false;
}
}
Integer key = m1.lowerKey(end);
if (key == null) {
m1.put(start, end);
return true;
}
int value = m1.get(key);
if (value <= start) {
m1.put(start, end);
return true;
}
while (key != null) {
if (m1.get(key) > start) {
value = m1.get(key);
// key start value end Overlap is :max(key, start) min(value, end)
// Left is min(key, start) max(key, start) On the right is min(value, end) max(value, end)
int l1 = Math.min(key, start);
int e1 = Math.max(key, start);
int l2 = Math.min(value, end);
int e2 = Math.max(value, end);
m2.put(e1, l2);
m1.remove(key);
if (l2 != e2) {
m1.put(l2, e2);
}
if (l1 != e1) {
start = l1;
end = e1;
key = m1.lowerKey(end);
if (key == null) {
m1.put(start, end);
return true;
}
} else {
break;
}
} else {
m1.put(start, end);
break;
}
}
return true;
}
}
/**
* Your MyCalendarTwo object will be instantiated and called as such:
* MyCalendarTwo obj = new MyCalendarTwo();
* boolean param_1 = obj.book(start,end);
*/【 Optimize 】 In fact, it doesn't matter if the primary interval overlaps with the secondary interval , Because first of all, we will go to the double interval judgment .
class MyCalendarTwo {
// double TreeMap 2:55
TreeMap<Integer, Integer> m1 = new TreeMap();
TreeMap<Integer, Integer> m2 = new TreeMap();
public MyCalendarTwo() {
}
public boolean book(int start, int end) {
Integer k2 = m2.lowerKey(end);
if (k2 != null && m2.get(k2) > start) {
return false;
}
Integer key = m1.lowerKey(end);
while (key != null) {
int value = m1.get(key);
if (value <= start) {
break;
}
m1.remove(key);
m2.put(Math.max(start, key), Math.min(end, value));
start = Math.min(start, key);
end = Math.max(end, value);
key = m1.lowerKey(end);
}
m1.put(start, end);
return true;
}
}
/**
* Your MyCalendarTwo object will be instantiated and called as such:
* MyCalendarTwo obj = new MyCalendarTwo();
* boolean param_1 = obj.book(start,end);
*/
边栏推荐
- 模拟卷Leetcode【普通】1219. 黄金矿工
- JWT-JSON WEB TOKEN
- leaflet 地图
- PHP uses redis to implement distributed locks
- Error getting a new connection Cause: org. apache. commons. dbcp. SQLNestedException
- win10无法操作(删除、剪切)文件
- Black cat takes you to learn UFS Protocol Part 8: UFS initialization (boot operation)
- [C language] string left rotation
- Understanding of processes and threads
- JWT-JSON WEB TOKEN
猜你喜欢
![[postman] test script writing and assertion details](/img/65/6520fe78bb2b3ff99f16d09ea8c0d1.png)
[postman] test script writing and assertion details

基于JEECG-BOOT制作“左树右表”交互页面

Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete

G - Supermarket

win10无法操作(删除、剪切)文件

Isam2 operation process

全程实现单点登录功能和请求被取消报错“cancelToken“ of undefined的解决方法

二维码的前世今生 与 六大测试点梳理

Selenium source code read through · 9 | desiredcapabilities class analysis

On weak network test of special test
随机推荐
Redis 核心技术与实战之 基本架构:一个键值数据库包含什么?
黑猫带你学UFS协议第4篇:UFS协议栈详解
MFC on the conversion and display of long string unsigned char and CString
把el-tree选中的数组转换为数组对象
Play video with Tencent video plug-in in uni app
使用Nacos管理配置
記一個基於JEECG-BOOT的比較複雜的增删改功能的實現
ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
MFC关于长字符串unsigned char与CString转换及显示问题
LeetCode 739. 每日温度
PHP uses redis to implement distributed locks
oscp raven2靶机渗透过程
An article was uncovered to test the truth of outsourcing companies
[no app push general test plan
模拟卷Leetcode【普通】1249. 移除无效的括号
Simulation volume leetcode [general] 1249 Remove invalid parentheses
记一个基于JEECG-BOOT的比较复杂的增删改功能的实现
ESP32 ESP-IDF看门狗TWDT
JWT-JSON WEB TOKEN
php使用redis实现分布式锁