力扣---用最少数量的箭引爆气球

news/2024/7/24 11:06:31 标签: leetcode, 算法, 职场和发展

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

一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstartxend, 且满足  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]。

思路:

可以看出本题的实质就是在找能够涵盖所有气球的最小交集个数。那么我们首先应该想到的是排序,经过排序后,然后遍历每一个区间,查看当前区间能够附带击破的气球的个数,比如如下图:

作者:Algorithm
链接:https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/solutions/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 代码:

class Solution {
public:
    int findMinArrowShots(vector<vector<int>>& points) {
        sort(points.begin(),points.end());
        int len = points.size();
        int res = len;
        vector<int> temp = points[0];
        for(int i = 1 ; i < len ; ){
            temp = points[i - 1];
            while((i < len) && (points[i][0] <= temp[1])){
                res--;
                temp[0] = points[i][0];
                temp[1] = min(temp[1],points[i][1]);
                i++;
            }
            i++;
        }
        return res;
    }
};

http://www.niftyadmin.cn/n/5418589.html

相关文章

vue diff 算法的核心逻辑

面试官问你&#xff0c;你知道diff算法的逻辑是什么么&#xff0c;新旧dom是如何进行对比的&#xff1f; &#xff08;1&#xff09;首先 diff 算法在源码中的 runtime-dom 里面的patch方法中实现的&#xff0c;参考 &#xff08;2&#xff09;diff 规则的 深度优先&#xf…

拿捏带头循环双向循环链表

目录 引言 一&#xff1a;结构定义 二&#xff1a;带头循环双向链表的各种操作 1.初始化 2.创建节点 3.尾插 4.头插 5.打印数据 6.判空 7.尾删 8.头删 9.查找 10.销毁 11.pos位置之前插入 12.删除pos位置的值 三&#xff1a;结束语 接下来的日子…

数据结构---C语言版 408 2019-41题代码版

题目&#xff1a; 2019 年 ( 单链表 ) 41 &#xff0e;&#xff08; 13 分&#xff09;设线性表 L ( a 1 , a 2 , a 3 ,…… ,an2, a n 1 , a n ) 采用带头结点的单链表保存&#xff0c;链表中 的结点定义如下&#xff1a; typedef struct node { int data; struc…

计算机网络 路由算法

路由选择协议的核心是路由算法&#xff0c;即需要何种算法来获得路由表中的各个项目。 路由算法的目的很明显&#xff0c;给定一组路由器以及连接路由器的链路&#xff0c;路由算法需要找到一条从源路由器到目的路由器的最佳路径&#xff0c;通常&#xff0c;最佳路径是由最低…

基于Unity3D引擎RPG游戏设计与开发

目 录 摘 要 I Abstract II 引 言 1 1.相关技术 3 1.1 Unity基础界面 3 1.2 C#脚本编写 3 1.3 Unity脚本 3 1.4 Unity物理引擎 3 1.5 UGUI 3 1.6 Unity动画系统 4 1.7 本章小结 4 2. 系统分析 5 2.1游戏内容需求分析 5 2.2游戏流程需求分析 5 2.3游戏场景需求分析 5 2.4怪物系…

【python】优先队列-堆 学习 Leetcode 239. 滑动窗口最大值

给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xff1a;nums [1,3,-1,-3,5,3,6,7], k 3 输…

第十七章 构建和配置 Nginx 以与 Web 网关配合使用 (Windows) - 已弃用:构建 Nginx 以使用通用模块

文章目录 第十七章 构建和配置 Nginx 以与 Web 网关配合使用 (Windows) - 已弃用&#xff1a;构建 Nginx 以使用通用模块 第十七章 构建和配置 Nginx 以与 Web 网关配合使用 (Windows) - 已弃用&#xff1a;构建 Nginx 以使用通用模块 重要提示&#xff1a;由于稳定性问题&…

基于SpringBoot的招聘网站

基于jspmysqlSpring的SpringBoot招聘网站项目&#xff08;完整源码sql&#xff09; 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》…