题目 715.Range模块

难度 困难


解法

class RangeModule {TreeSet<Interval> ranges;public RangeModule() {ranges = new TreeSet();}public void addRange(int left, int right) {Iterator<Interval> itr = ranges.tailSet(new Interval(0, left - 1)).iterator();while (itr.hasNext()) {Interval iv = itr.next();if (right < iv.left) break;left = Math.min(left, iv.left);right = Math.max(right, iv.right);itr.remove();}ranges.add(new Interval(left, right));}public boolean queryRange(int left, int right) {Interval iv = ranges.higher(new Interval(0, left));return (iv != null && iv.left <= left && right <= iv.right);}public void removeRange(int left, int right) {Iterator<Interval> itr = ranges.tailSet(new Interval(0, left)).iterator();ArrayList<Interval> todo = new ArrayList();while (itr.hasNext()) {Interval iv = itr.next();if (right < iv.left) break;if (iv.left < left) todo.add(new Interval(iv.left, left));if (right < iv.right) todo.add(new Interval(right, iv.right));itr.remove();}for (Interval iv: todo) ranges.add(iv);}
}class Interval implements Comparable<Interval>{int left;int right;public Interval(int left, int right){this.left = left;this.right = right;}public int compareTo(Interval that){if (this.right == that.right) return this.left - that.left;return this.right - that.right;}
}

LeetCode - OrderMap - 715.Range模块相关推荐

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

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

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

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

  3. LeetCode 715. Range 模块

    715. Range 模块 [有序集合]用TreeMap来进行有序集合的合并和拆分 class RangeModule {// 区间拆分与合并 9:34 10:31TreeMap<Integer ...

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

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

  5. 715. Range 模块

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

  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. android file mkdir,android file.mkdir()一直返回false问题
  2. 你在 Docker 中跑 MySQL?恭喜你,可以下岗了!
  3. java中的接口中的方法
  4. LeetCode Shell 192. 统计词频
  5. java 捕获特定异常_java – 使用特定消息捕获异常
  6. 【Ubuntu】Ubuntu16.04安装 搜狗输入法 史上最详细
  7. spring-boot actuator(监控)配置和使用
  8. 剑指offer(C++)-JZ8:二叉树的下一个结点(数据结构-树)
  9. 《Unity3D脚本编程与游戏开发》学习Day one
  10. socket编程之服务器端与客户端(代码实例)
  11. entware mysql 5.5_分享包--K3 基于 entware 构建 debian+宝塔面板+nginx+php+mysql 备份包
  12. 三维空间坐标系变换——旋转矩阵
  13. 2×3卡方检验prism_SPSS之卡方检验
  14. 【转载】为什么用交叉线而不是直通线连接相同的设备
  15. 1)华为手机使用电脑批量管理联系人 - 2)华为云空间联系人同步到手机 - 3)华为手机导入联系人列表
  16. unity xml反序列化为数据类
  17. 桌球java_java实现一个桌球小游戏
  18. Latex 数学符号和公式模板整理
  19. 正则表达式提取字符串全部汉字或者全部英文
  20. 了解python正则表达式

热门文章

  1. 空间两条直线的最短距离及最近点计算
  2. Linux学习:Linux启动管理器GRUB2
  3. Unity鼠标图标更换/点击图标更换
  4. Chrome 谷歌浏览器下载网页中的背景图、图标等
  5. node.js 基础(含mongodb,express,express-art-template)
  6. CSS3中的一些新特性(CSS)
  7. Ureport2导出内容加入PDF文件
  8. 超市收费系统云服务器,云服务器超市
  9. 2020一个诗人的新年计划
  10. 解决办法fonts/fontawesome-webfont.woff2 404