Leetcode 452. 用最少数量的箭引爆气球

题意理解

        气球用一个闭区间表示,击中区间内任意一个位置,气球会被引爆。

        区间指示了气球的位置和气球的可射击范围。

        若两个气球位置有重叠,则一只箭能解决引爆两个气球。

        目标:尽可能射击气球重叠最多的位置,用最少的箭引爆所有气球。

解题思路

        采用贪心思想来解题,全局最优是用最少的箭引爆最多的气球,

        则局部最优:尽可能射击气球重叠最多的地方

        为了实现局部最优,我们需要对气球的重叠部分进行判断,为了简单进行判断,我们以左区间为标准从小到大进行排序。

        当第i个区间的左边界<=第i-1个区间的右边界时,——两个气球重叠。一只箭可以引爆两个气球。 为了尽可能爆掉最多的气球,尽可能从重叠边缘的最右边射击,以确保爆掉最多的气球。

        所以第i+1个区间的左边界需要和重叠区域的最右边界比较,若重叠,则进行下一个气球的判断,否则,增加一只箭。

        当第i个区间的左边界>第i-1个区间的右边界时,——两个气球不重叠。需要增加一只箭引爆第i个气球 

1.贪心解题

注意:这里的输入限制如下所示,可能造成溢出,所以推荐使用Integer.comparen比较方法可以防止这个问题。

        在日常解题过程中也推荐有限选择有现有类内置的一些方法。

public int findMinArrowShots(int[][] points) {if(points.length==0) return 0;//记录箭数int count=1;//对point左边界升序排序// 使用Integer内置比较方法,不会溢出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]){//有重叠points[i][1]=Math.min(points[i][1],points[i-1][1]);}else{count++;//不重叠,增加一只箭}}return count;}

2.分析

时间复杂度:O(nlogn) 遍历气球的时间O(n)+排序的时间O(nlogn)

空间复杂度:O(logn) 排序所需的栈空间

n为输入数组大小

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构和算法】最大连续1的个数 III

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;滑动窗口 2.2 滑动窗口解题模板 三、代码 3.1 方法一&#xff1a;滑动窗口 四、…

Ubuntu 常用命令之 top 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 top命令是Linux下常用的性能分析工具&#xff0c;可以实时动态地查看系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。它可以显示系统总的和分区的CPU使用率、内存使用率、交换区使用率、系统负载、进程数、…

质量好的国产主食冻干猫粮有哪些牌子?推荐十大放心猫粮国产名单

养猫的朋友们应该都知道&#xff0c;猫咪对蛋白质的需求很高&#xff0c;如果猫咪摄入的蛋白质含量不足&#xff0c;就会影响到它们的成长发育。因此&#xff0c;蛋白质的含量对于猫咪的成长发育至关重要。而冻干猫粮是一种高蛋白、高营养、适口性好的产品&#xff0c;不仅能满…

Qt前端技术:3.QSS字体样式

small-caps就是让这个文本中的小写字母用大写的形式写出来并且在用大写的形式表达出来后他本身的大小会变小 有绝对尺寸和相对尺寸的区别 绝对尺寸一般是cm&#xff0c;英寸之类的 相对尺寸如px之类的是由显示器的屏幕分辨率来决定的 如windows用户分辨率一般是96像素点每英…

yocto系列讲解[实战篇]93 - 添加Qtwebengine和Browser实例

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述集成meta-qt5移植过程中的问题问题1:virtual/libgl set to mesa, not mesa-gl问题2:dmabuf-server-buffer tries to use undecl…

软考中级应该选哪个?

选择软考中级科目&#xff0c;应该怎么做&#xff1f; 1.1 软考中级科目有哪些可供选择&#xff1f; 1.2 如何选择适合自己的软考中级科目&#xff1f; 系统集成项目管理工程师真的容易吗&#xff1f; 如何在软考中级阶段选择科目&#xff1f;软考中级共有15个科目。软考共…

MACBOOK 通过iterm2连接堡垒机跳转服务器

本公司是通过齐治堡垒机连接远程服务器的环境&#xff0c;因为连接过程中需要自动输入密码和选择主机&#xff0c;所以要使用expect工具&#xff0c;编写expect脚本remote.exp #!/usr/bin/expectif { $argc ! 7 } {send_user "usage: expect $argv0 \[JUMP_HOST\] \[JUM…

项目中webpack优化配置(1)

项目中webpack优化配置 一. 开发效率&#xff0c; 体验 1. DLL&#xff08;开发过程中减少构建时间和增加应用程序的性能&#xff09; 使用 DllPlugin 进行分包&#xff0c;使用 DllReferencePlugin(索引链接) 对 manifest.json 引用&#xff0c;让一些基本不会改动的代码先…

【银行测试】金融银行测试难点与工作内容解析,一篇概全...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、金融银行测试的…

C#电源串口调试

目的 记录串口调试的遇到的一些问题以及相应的解决方法 1.串口定义:串口是计算机与其他硬件传输数据的通道&#xff0c;在计算机与外设通信时起到重要作用 2.串口通信的基础知识 C#中的串口通信类 C#使用串口通信类是SerialPort(),该类使用方法是 new 一个 SerialPort对象 为S…

Mybatis之增删改查

目录 一、引言 二、Mybatis——增 举例&#xff1a;添加用户 三、Mybatis——删 举例&#xff1a;删除用户 四、Mybatis——改 举例&#xff1a;修改用户 五、Mybatis——查 六、注意 END&#xff1a; 一、引言 书接上回&#xff0c;我们在了解完mybatis之后&#xff0c;肯…

ubuntu20 安装缺失的字体

在/usr/share/fonts创建文件夹winfonts sudo mkdir winfonts 下载缺失的字体后&#xff0c;复制命令到对应的文件夹。 刷新字体库 sudo mkfontscale sudo mkfontdir sudo fc-cache