当前位置:网站首页>LeetCode 715. Range 模块
LeetCode 715. Range 模块
2022-07-07 06:14:00 【Sasakihaise_】
【有序区间】区间拆分与合并,需要注意add的时候如果遇到[1, 10), [10, 11]这种要把他们合并起来,因为有可能查询[1, 11]这样的区间,因此这里用floorKey来找。
class RangeModule {
// 区间拆分与合并 7:21
TreeMap<Integer, Integer> map = new TreeMap();
public RangeModule() {
}
public void show() {
for (var k: map.keySet()) {
System.out.print("[" + k + "," + map.get(k) + "]");
}
System.out.println("====");
}
public void addRange(int left, int right) {
Integer key = map.floorKey(right);
while (key != null) {
int value = map.get(key);
if (value < left) {
break;
}
map.remove(key);
left = Math.min(key, left);
right = Math.max(value, right);
key = map.floorKey(right);
}
map.put(left, right);
// show();
}
public boolean queryRange(int left, int right) {
Integer key = map.floorKey(left);
if (key == null) {
return false;
}
if (map.get(key) >= right) {
return true;
}
return false;
}
public void removeRange(int left, int right) {
Integer key = map.lowerKey(right);
while (key != null) {
int value = map.get(key);
if (value <= left) {
break;
}
map.remove(key);
// key left value right
// key left right value
// left key value right
// left key right value
if (value > right) {
map.put(right, value);
}
if (key < left) {
map.put(key, left);
}
key = map.lowerKey(right);
}
// show();
}
}
/**
* Your RangeModule object will be instantiated and called as such:
* RangeModule obj = new RangeModule();
* obj.addRange(left,right);
* boolean param_2 = obj.queryRange(left,right);
* obj.removeRange(left,right);
*/
边栏推荐
- Merge sort and non comparison sort
- Data type - floating point (C language)
- POJ - 3784 Running Median(对顶堆)
- Data analysis methodology and previous experience summary 2 [notes dry goods]
- Image segmentation in opencv
- 联想混合云Lenovo xCloud:4大产品线+IT服务门户
- xray的简单使用
- ncs成都新電面試經驗
- Category of IP address
- Nanjing commercial housing sales enabled electronic contracts, and Junzi sign assisted in the online signing and filing of housing transactions
猜你喜欢
ncs成都新電面試經驗
Category of IP address
Greenplum 6.x reinitialization
National standard gb28181 protocol video platform easygbs adds streaming timeout configuration
Why choose cloud native database
opencv之图像分割
SSM integration
Count sort (diagram)
What is the method of manual wiring in PCB design in 22protel DXP_ Chengdu electromechanical Development Undertaking
Data analysis methodology and previous experience summary 2 [notes dry goods]
随机推荐
Componentspace2022, assertions, protocols, bindings, and configuration files
Mock. JS usage details
opencv之图像分割
[step on the pit] Nacos registration has been connected to localhost:8848, no available server
Mock.js用法详解
Calling the creation engine interface of Huawei game multimedia service returns error code 1002, error message: the params is error
MySQL introduction - crud Foundation (establishment of the prototype of the idea of adding, deleting, changing and searching)
南京商品房买卖启用电子合同,君子签助力房屋交易在线网签备案
数据分片介绍
[Yugong series] February 2022 U3D full stack class 006 unity toolbar
Database storage - table partition
快速集成认证服务-HarmonyOS平台
Quick sorting (detailed illustration of single way, double way, three way)
A single game with goods increased by 100000, and the rural anchor sold men's clothes on top of the list?
Greenplum6.x常用语句
Basic data types and string types are converted to each other
数据库存储---表分区
联想混合云Lenovo xCloud:4大产品线+IT服务门户
National SMS center number inquiry
[kuangbin]专题十五 数位DP