715. Range 模块

【有序集合】用TreeMap来进行有序集合的合并和拆分

class RangeModule {// 区间拆分与合并 9:34 10:31TreeMap<Integer, Integer> map = new TreeMap();public RangeModule() {}public void addRange(int left, int right) {Integer start = map.floorKey(right);while(start != null){int end = map.get(start);if(end >= left){left = Math.min(left, start);right = Math.max(right, end);map.remove(start);}else{break;}start = map.floorKey(right);}map.put(left, right);}public boolean queryRange(int left, int right) {// for(var k: map.keySet()){//     System.out.print("[" + k + "," + map.get(k) + "],");// }// System.out.println();// Integer start = map.floorKey(right);// if(start == null) return false;// if(start > left) return false;// if(map.get(start) < right) return false;// return true;Integer start = map.floorKey(left);if(start == null) return false;if(map.get(start) >= right) return true;return false;}public void removeRange(int left, int right) {//.  3种情况//   start________end//       left_________right.  [start, left], [end, right]X//   start________end//. left______________right.   [left, start]X, [end, right]X //.  start______________end//      left_______right       [start, left], [right, end]Integer start = map.floorKey(right);while(start != null){int end = map.get(start);if(start == right) break;if(end <= left) break;else{map.remove(start);int s1 = Math.min(start, left);int e1 = Math.max(start, left);if(s1 == start && e1 == left && s1 != e1) map.put(s1, e1);int s2 = Math.min(right, end);int e2 = Math.max(right, end);if(s2 == right && e2 == end && s2 != e2) {map.put(s2, e2);right --;}}start = map.floorKey(right);}}
}/*** 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);*/

LeetCode 715. Range 模块相关推荐

  1. Java实现 LeetCode 715 Range 模块(选范围)

    715. Range 模块 Range 模块是跟踪数字范围的模块.你的任务是以一种有效的方式设计和实现以下接口. addRange(int left, int right) 添加半开区间 [left, ...

  2. LeetCode - OrderMap - 715.Range模块

    题目 715.Range模块 难度 困难 解法 class RangeModule {TreeSet<Interval> ranges;public RangeModule() {rang ...

  3. 【宫水三叶的刷题日记】715. Range 模块

    题目描述 这是 LeetCode 上的 715. Range 模块 ,难度为 困难. Tag : 「线段树」.「线段树(动态开点)」 Range 模块是跟踪数字范围的模块.设计一个数据结构来跟踪表示为 ...

  4. 715. Range 模块

    Range 模块是跟踪数字范围的模块.你的任务是以一种有效的方式设计和实现以下接口. addRange(int left, int right) 添加半开区间 [left, right),跟踪该区间中 ...

  5. leetcode:715. Range 模块【无脑segmentTree】

    分析 线段树区间更新 + 区间求和即可 ac code from functools import reduceclass SegTree:'''支持增量更新,覆盖更新,序列更新,任意RMQ操作基于二 ...

  6. boost::range模块heap算法相关的测试程序

    boost::range模块heap算法相关的测试程序 实现功能 C++实现代码 实现功能 boost::range模块heap算法相关的测试程序 C++实现代码 #include <boost ...

  7. boost::range模块uniqued相关的测试程序

    boost::range模块uniqued相关的测试程序 实现功能 C++实现代码 实现功能 boost::range模块uniqued相关的测试程序 C++实现代码 #include <boo ...

  8. boost::range模块transformed相关的测试程序

    boost::range模块transformed相关的测试程序 实现功能 C++实现代码 实现功能 boost::range模块transformed相关的测试程序 C++实现代码 #include ...

  9. boost::range模块tokenized相关的测试程序

    boost::range模块tokenized相关的测试程序 实现功能 C++实现代码 实现功能 boost::range模块tokenized相关的测试程序 C++实现代码 #include < ...

最新文章

  1. RxJava 过滤操作符 distinct 和 distinctUntilChanged
  2. 用神经网络二分类理论重述双原子化合物的成键过程
  3. oracle+创建序列自增,oracle序列详解和建立自增主键
  4. LINQ 查询表达式(C# 编程指南)
  5. 开源组件DocX导出Word
  6. 在Java EE 6中将Bean验证与JAX-RS集成
  7. 图像风格迁移(Neural Style)简史
  8. Registry新建以及版本
  9. 使用代理,调用json-server的服务接口
  10. 属性子集选择的基本启发方法_Java机器学习库(Java ML)(三、特征选择)
  11. cf980E TheNumberGames (贪心+倍增)
  12. 未知高度的非表格垂直对齐
  13. ibm doors api java_IBM Rational DOORS通过DXL进行二次开发初试(1)
  14. 高通可穿戴设备平台 SDW4100 简介
  15. ITIL事件管理流程设计
  16. 计蒜之道 测试赛 (BCD)
  17. 使用redis incr处理并发,存在死锁问题
  18. python爬取北京租房信息
  19. Android解决部分手机拍照照片自动旋转的问题
  20. 计算机与英语教学相结合,计算机与英语教学结合_英语论文.doc

热门文章

  1. 宋朝名画“虎戴VR”,在外网火了
  2. 瓷砖铺贴方法_正确的瓷砖铺贴步骤!(全图标示)
  3. Importance Weighted Adversarial Nets for Partial Domain Adaptation学习笔记
  4. python实现梯度下降算法
  5. C#单元测试:NUnit详细使用方法
  6. 【优化布局】matlab基于禁忌搜索算法求解基站选址问题代码
  7. Tuscany 的说明
  8. 深入研究 CSSfloat属性
  9. 家庭NAS服务器(1)服务器的配置与选择
  10. 如何使用 DOI 快速找到论文的全文下载网址