当前位置:网站首页>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);
*/
边栏推荐
- 记一个基于JEECG-BOOT的比较复杂的增删改功能的实现
- php使用redis实现分布式锁
- 数据库隔离级别
- [API interface tool] Introduction to postman interface
- Isam2 and incrementalfixedlagsmooth instructions in gtsam
- LeetCode 739. 每日温度
- Remember the implementation of a relatively complex addition, deletion and modification function based on jeecg-boot
- 全程实现单点登录功能和请求被取消报错“cancelToken“ of undefined的解决方法
- 浅谈专项测试之弱网络测试
- [C language] string left rotation
猜你喜欢

Pat (Grade B) 2022 summer exam

Avtiviti创建表时报错:Error getting a new connection. Cause: org.apache.commons.dbcp.SQLNestedException
![[API interface tool] Introduction to postman interface](/img/03/c1541fca65dd726fd4bdc8793b605e.png)
[API interface tool] Introduction to postman interface

Past and present lives of QR code and sorting out six test points

全链路压测:构建三大模型

B - The Suspects

JDBC Requset 对应内容及功能介绍

LeetCode 731. 我的日程安排表 II

Technology sharing | common interface protocol analysis

Manhattan distance and Manhattan rectangle - print back font matrix
随机推荐
Idea new UI usage
记一个基于JEECG-BOOT的比较复杂的增删改功能的实现
Summary of the post of "Web Test Engineer"
Redis core technology and basic architecture of actual combat: what does a key value database contain?
Leaflet map
Thoughts on data security (Reprint)
Simulation volume leetcode [general] 1218 Longest definite difference subsequence
Redis 核心技术与实战之 基本架构:一个键值数据库包含什么?
Technology sharing | common interface protocol analysis
Simulation volume leetcode [general] 1062 Longest repeating substring
記一個基於JEECG-BOOT的比較複雜的增删改功能的實現
[no app push general test plan
Basic knowledge of MySQL
模拟卷Leetcode【普通】1143. 最长公共子序列
Resttemplate and feign realize token transmission
Online and offline problems
模拟卷Leetcode【普通】1249. 移除无效的括号
[C language] qsort function
全程实现单点登录功能和请求被取消报错“cancelToken“ of undefined的解决方法
leetcode 24. Exchange the nodes in the linked list in pairs