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

news2024/12/27 1:54:10

删除被覆盖区间

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

题目描述

难度 - 中等
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.coloradmin.cn/o/974877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Error: Cannot find module ‘timers/promises‘

这个错误很要命 他会导致你本机所有的npm 命令全部报错 首先 这个错误是因为 npm 与 node版本不匹配导致的 最简单的办法就是 查一下你安装的这个npm 的版本适配那个版本的 node 然后将本地的node删除 控制面板写在node 然后去官方文档现在与本地npm 匹配的node.js 这样 你执行…

健康舒适的超满意照明体验!SUKER书客SKY护眼台灯测评

健康舒适的超满意照明体验&#xff01;SUKER书客SKY护眼台灯测评 2022年全国儿童青少年总体近视率为53.6%&#xff0c;其中6岁儿童为14.5%&#xff0c;小学生为36%&#xff0c;初中生为71.6%&#xff0c;高中生为81%&#xff0c;近视已成为当下人们遇到的比较普遍的眼健康问题…

一加真我OPPO手机ROOT后怎么2个手机登录1个微信-微信平板模式

因为工作或者某些原因&#xff0c;很多用户希望在2个手机上登录同1个微信&#xff0c;协同使用达到更方便的 效果。自从微信更新到新版以后&#xff0c;新增了个平板模式&#xff0c;这就给我们的思路提供了玩法。通过 刷机实测&#xff0c;大部分安卓手机都能实现2个手机登录1…

Dual Adaptive Representation Alignment for Cross-domain Few-shot Learning

小样本学习的目的是通过学习基础知识&#xff0c;在有限的支持样本下识别新的查询。在此设置中&#xff0c;最近的进展假设基础知识和新查询样本分布在相同的域中&#xff0c;这对于实际应用通常是不可行的。

02-系统篇-内存分布

一.进程中的内存分布 进程是应用程序运行的单位&#xff0c;进程在内存中运行时&#xff0c;各个部分分布的情况如图。 1.栈内存(statck) 特点:后进先出 系统一般会对栈的大小进行限制&#xff0c;可以用命令进行查看&#xff0c;如下&#xff0c;700是进程号&#xff0c;栈被…

【python基础知识】4.列表和字典

文章目录 前言列表什么是列表从列表提取单个元素从列表提取多个元素给列表增加/删除元素 数据类型&#xff1a;字典什么是字典从字典中提取元素给字典增加/删除元素 列表和字典的异同列表和字典的不同点列表和字典的相同点 前言 截至目前&#xff0c;我们已经掌握了3种数据类型…

【NLP的python库(02/4) 】:Spacy

一、说明 借助 Spacy&#xff0c;一个复杂的 NLP 库&#xff0c;可以使用用于各种 NLP 任务的不同训练模型。从标记化到词性标记再到实体识别&#xff0c;Spacy 还生成了精心设计的 Python 数据结构和强大的可视化效果。最重要的是&#xff0c;可以加载和微调不同的语言模型以适…

宇凡微Y62R射频433接收芯片(功能强大的合封解决方案)

在现代科技领域&#xff0c;芯片技术的不断进步推动着无数创新应用的诞生。今天&#xff0c;我们将介绍一款功能强大的芯片——Y62R&#xff0c;这款芯片由宇凡微精心开发&#xff0c;融合了433接收功能和主控功能&#xff0c;为各种无线通信和控制应用提供了强大的解决方案。 …

nmp ERR! code ERR SOCKET TIMEOUT nmp ERR!network npmSocket timeout(已解决)

当安装vue-cli时&#xff0c;出现超时错误 npm ERR! code ECONNRESET npm ERR! network This is a problem related to network connectivity npm ERR! code ECONNRESET npm ERR! network aborted npm ERR! network This is a problem related to network connectivity. npm E…

GPT引领前沿与应用突破之GPT-4科研实践技术与AI绘图

查看原文>>>GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图 目录 专题一、AIGC概述 专题二、人工智能算法介绍 专题三、大语言模型Prompt提示词使用技巧 专题四、让GPT成为你的生活助理&#xff08;动手练习&#xff09; 专题五、让GPT成为你的工作秘书&…

Java入门基础知识

文章目录 关于JDK什么是JDK什么是JRE 关键字字面量,变量标识符 关于JDK 什么是JDK JDK是Java工具开发包,包含了JVM(程序运行环境),核心类库(直接应用即可),开发工具(Javac,java,jdb,jhat…) 什么是JRE JRE是Java运行环境,包含了JVM,核心类库,运行工具 JDK包含了JRE,JRE包含…

什么是50ETF期权开户条件,怎么开期权交易权限?

50ETF期权是指上证50ETF期权&#xff0c;标的物是上证50ETF&#xff0c;代码是&#xff08;510500&#xff09;&#xff0c;期权是一种在上证50ETF基础上进行衍生品交易的金融工具&#xff0c;下文科普什么是50ETF期权开户条件&#xff0c;怎么开期权交易权限&#xff1f;本文来…

我使用的Vim插件

2023年9月5日&#xff0c;周二下午 为了方便以后还原自己的Vim插件配置&#xff0c;于是写这篇博客来记录一下 不定期更新 目录 语法检查Syntastic文件树The NERD tree自动补全括号auto-pairs超轻量级自动补全vim-auto-popmenu 我使用的插件管理器是vim-plug 语法检查Syntas…

无涯教程-JavaScript - MONTH函数

描述 MONTH函数返回由序列号表示的日期的月份。月份以整数形式给出,范围从1(一月)到12(十二月)。 语法 MONTH (serial_number)争论 Argument描述Required/OptionalSerial_number 您要查找的月份的日期。 应该使用DATE函数或其他公式或函数的输出输入日期。 如果将日期作为文…

经纬恒润重磅推出第七代前视单目摄像头控制器

随着L2自动驾驶功能的普及&#xff0c;整车架构的升级&#xff0c;以及越来越高的法规要求&#xff0c;ADAS产品的开发迎来了更高的挑战&#xff1a;一方面&#xff0c;需要提高ADAS产品的整车性能&#xff0c;以应对更多的使用场景&#xff1b;另一方面&#xff0c;需要考虑AD…

【Python 实战】---- 批量绘制透明背景方形印章

1. 目标效果 2. 分析实现 可以使用 opencv 或者 PIL 进行绘制实现,但是由于 opencv 不能绘制中文,因此采用 PIL 进行印章制作;先绘制边框和隔离线;再绘制文字;最后给印章添加纹理。3. 绘制边框 3.1 绘制边框分析 通过 draw.rectangle 实现公用的矩形的绘制;获取图像长宽…

maven项目继承依赖中包版本的说明

继承 参考博客MAVEN的继承详解_parent中哪些标签可以被子项目继承_32224047_yw的博客-CSDN博客 https://blog.csdn.net/liupeifeng3514/article/details/80236827 dependencies 和dependencyManagement 在Maven多模块的时候&#xff0c;管理依赖关系是非常重要的&#xff…

冠达管理:上市破发是什么意思?

随着股票商场的开展&#xff0c;一些公司开端考虑走向上市&#xff0c;以取得更多的资金和更高的知名度。然而&#xff0c;上市并不总是一件功德。当一家公司的股票开端买卖时&#xff0c;如果它的股价远低于发行价&#xff0c;就可以说它遭遇了“破发”。这是一种负面事件&…

【CAD二次开发】重新加载acad.pgp快捷菜单文件

为了加快绘图速度&#xff0c;好多人会进行CAD快捷命令的修改&#xff0c;那怎么在不需要重启CAD的情况下自动更新&#xff1f; CAD修改acad.pgp,快捷命令后&#xff0c;自动更新。 方法一 命令行输入reinit&#xff0c;命令。 在弹出的窗口中&#xff0c;选择‘PGP文件’&…

【Linux详解】——共享内存

&#x1f4d6; 前言&#xff1a;本期介绍共享内存。 目录 &#x1f552; 1. 共享内存的原理&#x1f552; 2. 共享内存的概念&#x1f558; 2.1 接口认识&#x1f558; 2.2 演示生成key的唯一性&#x1f558; 2.3 再谈key &#x1f552; 3. 共享内存相关命令&#x1f552; 4. 利…