力扣435-无重叠区间(Java详细题解)

news2024/9/21 19:04:49

题目链接:435. 无重叠区间 - 力扣(LeetCode)

前情提要:

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

其实这题你如果做过力扣452-用最少数量的箭引爆气球或者看过我的这那篇题解的话,那么就会感觉这题跟那题很像。

题解在这:力扣452-用最少数量的箭引爆气球(Java详细题解)-CSDN博客

题目思路:

其实这道题与我上面说的那道题很像,甚至只要对那道题的代码稍加改造,就能AC了。

可能朋友们回想,要移除区间,那我是不是真的要把这块区间从集合中移除。

其实不用,这样代码更复杂,而且时间复杂度也会更差。

本题要求移除的最小数量。

其实就是求重叠的数量,记录重叠的数量并累加,就能得出移除区间的最小数量。

因为你重叠的都删了,剩下的就都是不重叠的。

那怎么寻找重叠的区域呢?

重叠区域的方式有很多种,我们可以先处理不重叠的部分。

只要当前区间的左边界大于等于上一个区间右边界,那么这俩区间肯定不重叠。

那么不重叠的区域考虑完后,我们是不是就要考虑重叠的区域。

其实在代码里很好考虑重叠的部分,只要if else就好啦。

if判断不重叠,那么else的就是重叠的部分了。

我们判断当前区间与上一个区间重叠时,我们还应该判断与下一个区间是否重叠。

如何判断是否与下一个重叠呢?

其实我们只要将本层的右边界与上一个的右边界取最小值。

这样遍历到下一层时,他与上一层的右边界进行比较,就能知道本层能不能与上俩层一起重叠。

如果重叠就将重叠数量加一。

举个例子。

在这里插入图片描述

注意这里的气球你可以理解为区间。

最终代码:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        //这个题可以说跟上一道非常像。
        //上一道是要加不重叠的数量,这一道是要加重叠的数量。
        //该题就是要求重叠区间的数量
        int result = 0;
        Arrays.sort(intervals,(a,b) -> {
            return a[0] - b[0];
        });
        for(int i = 1;i < intervals.length;i ++){
            //当出现没重叠时,就不管,开始遍历下一个区间。
            if(intervals[i][0] >= intervals[i - 1][1]){
                continue;
                //出现重叠式,就将移除数量加1
            }else{
                result ++;
                //当本区件与上一个区间出现重叠区间时,怎么判断与下一个区间是否重叠
                //直接将本层与上一层取一个最小值,因为上俩层已经重叠了,我们要判断与下一层是否重叠,就要找上俩层右边界的最小值,只有右边界最小值还小与等于下一层边界,那么本层与上俩层就不重叠,否则就会重叠。
                //本层我们只取最小值,循环到下一层时就会与上俩层的做对比啦
                intervals[i][1] = Math.min(intervals[i][1],intervals[i - 1][1]);
            }
        }
        return result;
    }
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095234.html

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

相关文章

祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Nature

公众号&#xff1a;生信漫谈&#xff0c;获取最新科研信息&#xff01; 祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Naturehttps://mp.weixin.qq.com/s?__bizMzkwNjQyNTUwMw&mid2247487136&idx1&sn9d65a5f18c7b5131800446bcbba7fa06&chksmc0e9…

计算之魂:持续于正确的因果链(一)

文章目录 引言25 人赛跑比赛过程模拟演示 BB84 量子密钥分发&#xff08;量子通信&#xff09;协议模拟图形化演示 BB84 协议过程BB84 协议优势应用场景 结语 引言 如果你只有一杆 100 年前的毛瑟枪&#xff0c;能够打中目标只能靠天分&#xff0c;如果你有一杆最先进的狙击步…

每日定期分享诗歌

安装schedule库 首先&#xff0c;确保你已经安装了schedule库。如果没有安装&#xff0c;可以使用以下命令进行安装&#xff1a; pip install schedulepython每日定期分享诗歌 import json import requests import schedule import timedef get_poem():# 这里使用一个公开的…

Linux下快速判断当前终端使用的是bash or csh

在Linux下设置环境变量的时候&#xff0c;可能你也遇到过export: Command not found一类的错误。这是因为当前终端使用的不是bash&#xff0c;如何快速判断当前终端使用的是哪种类型的shell呢&#xff1f; echo $0判断shell类型 最简单的方法就是在终端输入echo $0&#xff0…

编写一个每次随机生成 10个 0(包括) 到 100 之间的随机正整数。

编写一个每次随机生成 10个 0&#xff08;包括&#xff09; 到 100 之间的随机正整数。 package cn.itcast.example;import java.util.Iterator; import java.util.Random; public class example {public static void main (String[] arge) {System.out.println("Math.ra…

【微机原理】v和∧区别

&#x1f31f; 嗨&#xff0c;我是命运之光&#xff01; &#x1f30d; 2024&#xff0c;每日百字&#xff0c;记录时光&#xff0c;感谢有你一路同行。 &#x1f680; 携手启航&#xff0c;探索未知&#xff0c;激发潜能&#xff0c;每一步都意义非凡。 在汇编语言和逻辑表达…

Android使用内容提供器(ContentProvider)实现跨程序数据共享

文章目录 Android使用内容提供器&#xff08;ContentProvider&#xff09;实现跨程序数据共享新建内容提供器DatabaseProvider修改DatabaseProvider中的代码AndroidManifest.xml文件中注册provider修改activity_main.xml中的代码修改MainActivity中的代码运行ProviderTest项目 …

mysql查询慢除了索引问题还会是因为什么?

问题 作为一个程序员SQL查询慢的问题在工作和面试中都是会经常遇到的问题, 一般情况下我们都会联想到索引问题, 那么除了索引问题还有什么其他的场景会导致SQL查询慢呢? MySQL执行查询逻辑 例如我们使用可视化工具执行这样一条SQL: select * from user_info where age 10;…

Java:寻找最长连续序列

Java实现寻找最长连续序列 引言问题描述设计思路实现代码 代码解释单元测试 总结 引言 在面对大规模数据集时&#xff0c;经常需要识别出其中的连续子序列&#xff0c;这一任务在诸多领域如股票市场分析、天气预报等方面尤为关键&#xff0c;因为连续性的数据往往承载了重要的…

MacBook真的不能打游戏吗?Mac打游戏会损坏电脑吗?苹果电脑怎么玩游戏

MacBook从来都是高端的代名词&#xff0c;超强的性能搭配顶尖的系统&#xff0c;不光处理大型文件时举重若轻&#xff0c;长期使用也不会有明显卡顿。但很多人在需要MacBook一流的生产力同时&#xff0c;也希望能在空闲时体验游戏的乐趣。在大多人的印象里&#xff0c;Mac电脑对…

剑指offerJZ24 反转链表

描述&#xff1a; 给定一个单链表的头结点pHead(该头节点是有值的&#xff0c;比如在下图&#xff0c;它的val是1)&#xff0c;长度为n&#xff0c;反转该链表后&#xff0c;返回新链表的表头。 数据范围&#xff1a; 0≤n≤10000≤n≤1000 要求&#xff1a;空间复杂度 O(1)&…

大模型本地化部署1-Ollama安装(Windows)

大模型本地化部署1-Ollama安装&#xff08;Windows&#xff09; 1、下载Ollama安装包2、安装Ollama3、设置模型存放目录4、查看Ollama支持的模型5、模型安装6、查看已安装的模型列表7、运行一个模型8、设置Ollama允许外放访问 1、下载Ollama安装包 Ollama官网地址 https://oll…

【数据结构】二叉树基础(带你详细了解二叉树)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;最近学习了二叉树&#xff0c;和大家分享一下我的理解和感悟&#xff0c;希望对大家有所帮助&#xff0c;话不多说&#xff0c;开整&#xff01;&#xff01;&#xff01; &#x1f525;&#x1f525;&#x1f5…

示波器测量交流市电的注意事项

先说结论&#xff1a; 测量交流电或者市电的时候&#xff0c;注意示波器的电源千万不要用那种带GND的三角插头&#xff0c;可以用双脚插头但要小心漏电&#xff0c;示波器外壳金属部分可能带电&#xff1a; 当示波器的探头探针接L&#xff0c;黑色架子接N&#xff0c;这个时候…

YOLOv8改进 | 模块缝合 | C2f融合卷积重参数化OREPA【CVPR2022】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

python自动化操作PDF,拆分pdf合并pdf,提取pdf内容

第三方库介绍 Python 操作 PDF 会用到两个库&#xff0c;分别是&#xff1a;PyPDF2 和 pdfplumber。 PyPDF2 可以更好的读取、写入、分割、合并PDF文件&#xff1b; pdfplumber 可以更好的读取 PDF 文件中内容和提取 PDF 中的表格&#xff0c;主要应用于机器生…

Redis基础知识学习笔记(二)

文章目录 一.Redis安装1.Windows 下安装1>资源管理器目录进入2>目录进入命令:3.配置环境变量 2.Linux 下安装1> 安装redis2> 启动redis3> 查看 redis 是否启动 二.Redis配置1. 查看配置2. 编辑配置3. 参数说明 三.Redis数据类型1. String&#xff08;字符串&…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM的内存模型 4.那些是GC Roots的对象有哪些&#xff1f; 1.类加载过程 通过类加载器加载主类到JVM&#xff0c;加载过程可以分为五个主要阶段&#xff1a;加载、验证、准备、解析、初始化。…

PyTorch中使用Transformer对一维序列进行分类的源代码

在PyTorch中使用Transformer对一维序列进行分类是一种常见做法&#xff0c;尤其是在处理时间序列数据、自然语言处理等领域。Transformer模型因其并行化处理能力和自注意力机制而成为许多任务的首选模型。 下面是一个使用PyTorch实现Transformer对一维序列进行分类的完整示例代…

ECC密码与RSA

一、ECC密码&#xff08;椭圆曲线密码&#xff09; 1.基本知识 定义&#xff1a; ECC 全称为椭圆曲线加密&#xff0c;EllipseCurve Cryptography&#xff0c;是一种基于椭圆曲线数学的公钥密码。与传统的基于大质数因子分解困难性的加密方法不同&#xff0c;ECC 依赖于解决椭圆…