力扣452-用最少数量的箭引爆气球(Java详细题解)

news2024/11/15 17:24:46

题目链接:452. 用最少数量的箭引爆气球 - 力扣(LeetCode)

前情提要:

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

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

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

题目思路:

其实本题模拟一遍后思路不难想,就是尽可能的找重叠的区域,一箭可以把重叠的全射了。

全局最优:用最小的弓箭数就能射完。

首先对数组排序 这样才会尽可能的重叠。

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

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

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

只要不重叠,我就要开始增加我的弓箭数了。

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

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

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

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

如果重叠,那就一箭就可以了。

不重叠,就要再加一箭了。

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

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

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

举个例子。

在这里插入图片描述

ok 思路大概就是这样。 我们来看最终代码吧。

class Solution {
    public int findMinArrowShots(int[][] points) {
        //这里需要特判一下 当数组数量为0时 气球都为0了 那我就不用射箭了 所以直接返回0
        if(points.length == 0)return 0;
        //注意这里初始化为1 因为只要数组数量大于0,就肯定需要一支箭 就当第一只箭已经处理了 后面一旦出现不重叠的部分肯定就需要俩支箭
        int result = 1;
        Arrays.sort(points,(a,b) -> Integer.compare(a[0], b[0]));
        for(int i = 1;i < points.length;i ++){
            //只要当前的大于上一个 那么本层就直接射 射箭数就加一 
            //也就是出现了不重叠的部分 我肯定是要用俩箭才能射掉 也就是加了一箭
            if(points[i][0] > points[i - 1][1]){
                result ++;
            }else{
                //当前这层右边界就等于与上一层比较的最小值
                //这样就能判断上两层与下一层是否重叠
                points[i][1] = Math.min(points[i][1],points[i - 1][1]);
            }
        }
        return result;
    }
}

其实代码并不复杂,思路也不难想,大家多模拟几遍就好。

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

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

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

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

相关文章

PCL-直通滤波

本篇内容&#xff1a; 讲解直通滤波的作用通过pcl实现直通滤波 效果&#xff1a; 1 主要原理 点云数据通常包含x、y、z三个维度的数据&#xff0c;用户指定维度、范围后&#xff0c;直通滤波过滤或保留该范围内的所有点云 假设我指定维度’y’&#xff0c;范围&#xff08;…

华为OD机试真题 - 字符串加解密(Java/Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Java/Python/JS/C/C++)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX…

如何让“相信相信的力量”帮你多赚100万

公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 我们经常听到这句话&#xff1a;相信相信的力量 为什么要相信相信的力量 相信是什么意思 相信的力量又是什么意思 我估计99%的人不知道这句话的底层逻辑是什么 如果你悟透了&#xff0c;你的并且践行了&…

数据结构之稀疏数组

稀疏数组 特殊的数据结构&#xff0c;其特点是大部分元素为同一值。 适用场景 处理方式 以二维数组为例&#xff1a; ● 遍历原始二维数组&#xff0c;查询出不同的值 ● 稀疏数组列数固定为3 ● 第一行记录原始二维数组的行数、列数、不同值的个数 ● 第二行开始记录不同值的…

Python优化算法21——混沌反馈共享和群体协同效应的蝴蝶优化算法(CFSBOA)

科研里面优化算法都用的多&#xff0c;尤其是各种动物园里面的智能仿生优化算法&#xff0c;但是目前都是MATLAB的代码多&#xff0c;python几乎没有什么包&#xff0c;这次把优化算法系列的代码都从底层手写开始。 需要看以前的优化算法文章可以参考&#xff1a;Python优化算…

C++八股文之语言基础篇

&#x1f916;个人主页&#xff1a;晚风相伴-CSDN博客 思维导图链接&#xff1a;C语言基础 持续更新中…… &#x1f496;如果觉得内容对你有帮助的话&#xff0c;还请给博主一键三连&#xff08;点赞&#x1f49c;、收藏&#x1f9e1;、关注&#x1f49a;&#xff09;吧 &…

Java中post请求外部接口。其中有应对form-data参数方式处理

一、正常json参数的请求方式 代码片段如下&#xff1a; String result HttpUtil.post(URL_DEFAULT"d38e4357cb96dce5", JSONUtil.parseObj(Dict.create().set("fileName", cityTransitMapParams.getFileName()).set("appKey",cityTransitMapPa…

华为OD机试真题 - 荒岛求生 - 栈Stack(Java/Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Java/Python/JS/C/C++)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX…

使用JaCoCo 生成单测覆盖率报告

引入插件 <!-- surefire plugin with spock and junit --> <plugin><groupId>org.codehaus.gmavenplus</groupId><artifactId>gmavenplus-plugin</artifactId><version>1.9.0</version><executions><execution>&l…

使用ROCm和AMD GPU进行机器学习基准测试:复现我们的MLPerf推理提交

Benchmarking Machine Learning using ROCm and AMD GPUs: Reproducing Our MLPerf Inference Submission — ROCm Blogs 简介 衡量新技术的性能是自古以来的一种实验&#xff0c;常常引人入胜&#xff08;例如&#xff0c;我们仍然用马力来比较新电动汽车电机的性能&#xf…

Session 运行机制详解:从创建到销毁

Session 运行机制详解&#xff1a;从创建到销毁 一、Session的创建二、Session的维持三、Session的销毁 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Web开发中&#xff0c;Session机制是实现用户会话跟踪的重要手段。它允许服务器在多…

linux 9系统分区扩容

1.可以看到我的是9.2的系统&#xff0c;系统分区&#xff1a;/dev/mapper/rl-root 83G 8.0G 75G 10% / 2.接下来&#xff0c;我们新增一块新的硬盘&#xff0c;而不是直接对这个硬盘的基础上再扩容。 关机&#xff0c;加30G硬盘&#xff0c;再开机 fdisk -l fdisk /dev/…

29 路由工作原理

路由工作原理 一、理解路由工作原理 &#xff08;一&#xff09;什么是路由 ​ 将数据包从一个网络发送到另一个网络 ​ 需要依靠路由器 ​ 来完成路由器只关心网络的状态&#xff0c;决定最佳路径 &#xff08;二&#xff09;路由器工作原理 ​ 主要完成下列事情&#…

c++算法第一天

温馨提示&#xff1a;本篇文章适合刚开始练算法的小白&#xff0c;大佬若见勿嘲 、 题目 核心提取 1.所有的0移动到数组末尾 2.不能复制数组 解题思路 遇到0,cur,非0则先dest1,再交换&#xff0c;最后cur。 代码编写 温馨提示&#xff1a;这里的指针可以使用下标代替 …

nefu暑假集训4 哈希 个人模板+例题汇总

前言&#xff1a; 什么是哈希&#xff1f;哈希其实是所有字符串操作中&#xff0c;最简单的操作了&#xff08;哈希的过程&#xff0c;其实可以看作对一个串的单向加密过程&#xff0c;并且需要保证所加的密不能高概率重复&#xff08;就像不能让隔壁老王轻易地用它家的钥匙打开…

室分(室内分布系统)主要器件

室分&#xff0c;即室内分布系统&#xff0c;是一种将基站信号引入室内&#xff0c;并对信号进行分布和覆盖的系统。它主要用于解决室内通信信号覆盖不足的问题&#xff0c;提高室内通信质量。室分系统通常由信号源、传输系统、分布系统和天线等部分组成&#xff0c;可以实现对…

java计算机毕设课设—JSP企业快信系统(附源码、文章、相关截图、部署视频)

这是什么系统&#xff1f; java计算机毕设课设—JSP企业快信系统(附源码、文章、相关截图、部署视频) 详细的资源获取方式在最下方 JSP企业快信系统是一款专为企业内部及外部通信设计的小型企业通信软件&#xff0c;旨在解决企业在日常沟通中遇到的信息传递不及时、沟通不畅…

火绒安全与国际对手:全面对比与分析

目录 一、产品功能与技术特性对比 火绒安全 360安全卫士 卡巴斯基安全软件 二、市场表现与用户评价 火绒安全 360安全卫士 卡巴斯基安全软件 三、未来挑战与发展 技术与服务对比表格 结语 在数字化时代&#xff0c;网络安全成为了个人和企业面临的主要挑战之一。随着…

数学建模强化宝典(4)fminunc

一、介绍 fminunc 是 MATLAB 中用于求解无约束多变量非线性优化问题的函数。它尝试找到给定函数的最小值点&#xff0c;不需要用户提供函数的导数信息&#xff08;尽管如果提供了导数信息&#xff0c;算法通常会更快更准确地收敛&#xff09;。fminunc 使用的是拟牛顿法&#x…

stm32 8080时序驱动lcd屏幕

PSAM使用的硬件接口 PSAM读时序 PSAM写时序 相关时序 PSAM_RCRx NOR 和PSRAM控制寄存器