【练习】【贪心】力扣452. 用最少数量的箭引爆气球

ops/2025/3/4 18:07:38/

题目

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

有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] = [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。

一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被 引爆 。可以射出的弓箭的数量 没有限制 。 弓箭一旦被射出之后,可以无限地前进。

给你一个数组 points ,返回引爆所有气球所必须射出的 最小 弓箭数 。

示例 1:

输入:points = [[10,16],[2,8],[1,6],[7,12]]

输出:2

解释:气球可以用2支箭来爆破:

  • 在x = 6处射出箭,击破气球[2,8]和[1,6]。

  • 在x = 11处发射箭,击破气球[10,16]和[7,12]。

示例 2:

输入:points = [[1,2],[3,4],[5,6],[7,8]]

输出:4

解释:每个气球需要射出一支箭,总共需要4支箭。

示例 3:

输入:points = [[1,2],[2,3],[3,4],[4,5]]

输出:2

解释:气球可以用2支箭来爆破:

  • 在x = 2处发射箭,击破气球[1,2]和[2,3]。

  • 在x = 4处射出箭,击破气球[3,4]和[4,5]。

来源:力扣452. 用最少数量的箭引爆气球


思路(注意事项)


纯代码

class Solution {
private:static bool cmp (const vector<int>& a, const vector<int>& b){return a[0] < b[0];}
public:int findMinArrowShots(vector<vector<int>>& points) {sort (points.begin(), points.end(), cmp);int ans = 1;for (int i = 1; i < points.size() ; i ++){if (points[i][0] > points[i - 1][1]) ans ++;else points[i][1] = min (points[i][1], points[i - 1][1]);}return ans;}
};

题解(加注释)

class Solution {
private:// 自定义排序规则static bool cmp(const vector<int>& a, const vector<int>& b) {// 按气球的起始位置升序排序return a[0] < b[0];}public:int findMinArrowShots(vector<vector<int>>& points) {// 对 points 数组进行排序sort(points.begin(), points.end(), cmp);// ans 表示需要的箭的数量,初始为 1int ans = 1;// 遍历排序后的 points 数组for (int i = 1; i < points.size(); i++) {// 如果当前气球的起始位置大于前一个气球的结束位置if (points[i][0] > points[i - 1][1]) {ans++; // 需要一支新的箭} else {// 否则,更新当前气球的结束位置为两个气球结束位置的较小值points[i][1] = min(points[i][1], points[i - 1][1]);}}// 返回需要的箭的数量return ans;}
};

http://www.ppmy.cn/ops/163094.html

相关文章

基于DeepSeek与Swarm的全场景多智能体客服实战解析(含全套源码)

本文来自九天老师的公开课&#xff0c;由赋范空间运营进行整理编辑&#xff0c;如果你有任何建议欢迎评论告知哦~ DeepSeek v3可以说是智能体开发的首选模型没有之一&#xff01; 模型综合性能和GPT4o相当&#xff0c;价格只需要GPT4o的1/20&#xff0c;并且支持Function cal…

Python for Data Analysis第二版【中文版】-第六章

访问数据是使用本书所介绍的这些工具的第一步。我会着重介绍pandas的数据输入与输出&#xff0c;虽然别的库中也有不少以此为目的的工具。 输入输出通常可以划分为几个大类&#xff1a;读取文本文件和其他更高效的磁盘存储格式&#xff0c;加载数据库中的数据&#xff0c;利用…

计算机网络-实验四子网划分

三、实验内容及步骤 1.要求 【题目】某单位申请了⼀个 C 类⽹络&#xff0c;单位内部有3个部门&#xff0c;各部门约50台主机&#xff0c;需要划分为3个⼦⽹&#xff0c;各部门接⼊到汇聚交换机&#xff0c;在汇聚层进⾏路由连通。假定申请到的C类网络为200.200.200.0。 2.实…

配置Spring Boot API接口超时时间(五种)

1、简介 在开发API接口时&#xff0c;配置API接口的超时时间是一项非常重要的任务。超时时间的设置对于确保系统的稳定性和响应性至关重要。当客户端发送请求到服务器时&#xff0c;如果服务器由于某些原因&#xff08;如数据库查询缓慢、外部服务调用失败等&#xff09;无法及…

react工程化开发

react工程化开发 组件化/模块化 业务组件 & 通用组件 全局命令create-react-app npm run eject npm run eject 暴露webpack配置。&#xff08;一旦暴露就无法还原&#xff09; 新增了很多依赖项 babel/core es6转成es5 react-refresh 关于刷新的插件 babel-preset-react-ap…

Ubuntu 安装 stable-diffusion-webui-docker 常见问题处理方法

安装 Stable Diffusion WebUI Docker 工程地址 https://github.com/AbdBarho/stable-diffusion-webui-docker 第一步是 git clone 下来 Setup 阅读 README 中的 setup&#xff0c;进入页面 https://github.com/AbdBarho/stable-diffusion-webui-docker/wiki/Setup docker …

父子继承与转型

ISettings为接口&#xff0c;Settings是实现类。 1、Settings可以自动转型为ISettings&#xff1b; 2、List<Settings>不可以自动转型为List<ISettings>&#xff0c; 原因在于泛型类型在 Java 中是 不可协变&#xff08;invariant&#xff09;的&#xff0c;即使…

Vue核心知识:动态路由实现完整方案

在Vue中实现动态路由&#xff0c;并结合后端接口和数据库表设计&#xff0c;是一个复杂的项目&#xff0c;需要多个技术栈和步骤的配合。以下将详细描述整个实现过程&#xff0c;包括数据库设计、后端接口设计、前端路由配置以及如何实现动态路由的功能。 目录 一、需求分析二…