当前位置: 首页 > news >正文

leetcode1288. 删除被覆盖区间(java)

删除被覆盖区间

  • 题目描述
    • 贪心法
    • 代码演示

题目描述

难度 - 中等
leetcode1288. 删除被覆盖区间

给你一个区间列表,请你删除列表中被其他区间所覆盖的区间。
只有当 c <= a 且 b <= d 时,我们才认为区间 [a,b) 被区间 [c,d) 覆盖。
在完成所有删除操作后,请你返回列表中剩余区间的数目。

示例:
输入:intervals = [[1,4],[3,6],[2,8]]
输出:2
解释:区间 [3,6] 被区间 [2,8] 覆盖,所以它被删除了。

提示:​​​​​​
1 <= intervals.length <= 1000
0 <= intervals[i][0] < intervals[i][1] <= 10^5
对于所有的 i != j:intervals[i] != intervals[j]

在这里插入图片描述

贪心法

所谓区间问题,就是线段问题,让你合并所有线段、找出线段的交集等等。主要有两个技巧:
1、排序。常见的排序方法就是按照区间起点排序,或者先按照起点升序排序,若起点相同,则按照终点降序排序。当然,如果你非要按照终点排序,无非对称操作,本质都是一样的。
2、画图。就是说不要偷懒,勤动手,两个区间的相对位置到底有几种可能,不同的相对位置我们的代码应该怎么去处理。

关于本题:
对于这种区间问题,如果没啥头绪,首先排个序看看,比如我们按照区间的起点进行升序排序:
在这里插入图片描述排序之后,两个相邻区间可能有如下三种相对位置:
在这里插入图片描述对于这三种情况,我们应该这样处理:

对于情况一,找到了覆盖区间。

对于情况二,两个区间可以合并,成一个大区间。

对于情况三,两个区间完全不相交。

代码演示

 /*** 去除覆盖的线段* @param intervals* @return*/public int removeCoveredIntervals(int[][] intervals) {//起点升序,终点降序Arrays.sort(intervals,(a,b) -> {if(a[0] == b[0]){return b[1] - a[1];}return a[0] - b[0];});//记录被覆盖的线段数int res = 0;int left = intervals[0][0];int right = intervals[0][1];for (int i = 1; i < intervals.length;i++){//情况一 找到覆盖区间if (left <= intervals[i][0] && right >= intervals[i][1]){res++;}//情况二 找到相交区间,合并if (right >= intervals[i][0] && right <= intervals[i][1]){right = intervals[i][1];}//情况三 完全不相交if (right < intervals[i][0]){left = intervals[i][0];right = intervals[i][1];}}return intervals.length - res;}
http://www.lryc.cn/news/156778.html

相关文章:

  • Python 虚拟环境相关命令
  • 使用U盘同步WSL2中的git项目
  • Stable Diffuse AI 绘画 之 ControlNet 插件及其对应模型的下载安装
  • CMAK学习
  • Python 推导式
  • es6的新特性有哪些
  • logstash 消费kafka数据,转发到tcp端口
  • 航天智信:严控航天系统研发安全,助力建设“航天强国”
  • 阿里云2核4G服务器5M带宽五年租用价格表
  • 基于Laravel通用型内容建站企业官网系统源码 可免费商用
  • 风力发电常见问题
  • uniapp 解决跨域的问题
  • Springboot GET和POST请求的常用参数获取方式
  • 项目(智慧教室)第四部分,页面交互功能
  • 基于Matlab分析的电力系统可视化研究
  • MySQL为什么不推荐使用in
  • python中的复数
  • Lua02——应用场景及环境安装
  • 基于Springcloud的基础框架,统一gateWay网关鉴权demo,附下载地址
  • 算法训练day34|贪心算法 part03(LeetCode 1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果(处理一边再处理一边))
  • 插入排序和冒泡排序
  • go Session的实现(一)
  • QTableView合并单元格
  • 如何使用SpringCloud Eureka 创建单机Eureka Server-注册中心
  • QT连接OpenCV库实现人脸识别
  • 基于SSM+Vue的网上花店系统
  • 两种解法解决 LeetCode 27. 移除元素【C++】
  • Vue + Element UI 前端篇(七):功能组件封装
  • QT QToolBox控件使用详解
  • 数学建模--主成分分析法(PCA)的Python实现(