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

news2024/11/18 3:27:03

有一些球形气球贴在一堵用 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]。
 

提示:

1 <= points.length <= 105
points[i].length == 2
-231 <= xstart < xend <= 231 - 1

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

思路:

与上一题类似,区别是之前总是拿后一个区间的start值比较当前的end值,此题则按照顺序从最小的end值开始比较每个start在他之前的区间,之所以这样可以确保气球被扎破,是因为数组是按照end从小到大排序的,所以区间end一定大于等于当前标记的end,所以只需要判断start的值是否小于当前end值,如果大于,说明要重新换一只箭再次比较。

class Solution {
    public int findMinArrowShots(int[][] points) {
        int length = points.length;
        if (length == 0) {
            return 0;
        }

        //Arrays.sort(points, Comparator.comparingInt(o -> o[1]));

        Arrays.sort(points, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1] < o2[1] ? -1 : o1[1] == o2[1] ? 0 : 1;
            }
        });

        int count = 1;
        int end = points[0][1];

        for (int i = 1; i < length; i++) {
            if (points[i][0] <= end) {
                continue;
            } else {
                end = points[i][1];
                count++;
            }
        }
        return count;
    }
}

 

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

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

相关文章

DAX:概述ALL函数

简单的说&#xff0c;当ALL用作表函数时&#xff0c;忽略应用到表上的任何过滤器&#xff0c;并返回数据表&#xff1b;当ALL用作CALCULATE和CALCULATETABLE函数中修饰器时&#xff0c;ALL函数从扩展表中移除已经应用的过滤上下文。 注意自动存在(auto-eixist)对ALL()函数的影响…

前后端目前进展

进展 前端第一个vue2第二个vue2&#xff08;用来复盘结果报错&#xff09;第三个vue2 后端第一个django&#xff08;本地&#xff09;第二个django&#xff08;GPU&#xff09; 前后端连接 前端 (前端创建方式/流程详细见我的博客vue2创建) 第一个vue2 项目名&#xff1a;te…

戴尔G3 Ubuntu18.04双系统安装

ROS学习需要使用Linux系统&#xff0c;首先就是Ubuntu&#xff0c;我选择的是18.04.6这个版本&#xff0c;因为后面我要使用以Jetson Nano为主控的Jetbot进行ROS编程&#xff0c;Jetbot所带的出厂镜像就是18.04&#xff0c;为了方便程序移植&#xff0c;以及减少不必要的麻烦。…

MATLAB | 绘图复刻(八) | 堆叠柱状图+哑铃图

本次复刻的是Nature Communications中Friedman, S.T., Muoz, M.M. A latitudinal gradient of deep-sea invasions for marine fishes. Nat Commun 14, 773 (2023). https://doi.org/10.1038/s41467-023-36501-4的Fig1图像&#xff1a; 复刻效果&#xff1a; 文章可在如下网站下…

【数据结构】- 线性表+顺序表

文章目录 前言一、线性表二、顺序表2.1概念及结构2.2接口实现2.3具体实现 总结 前言 所有的失败都是上帝在考验你是否真的热爱 本章是关于数据结构中的顺序表和链表 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、线性表 线性表&#xff08;line…

017:Mapbox GL加载geojson数据,显示Polygon,自定义填充色、边框等

第017个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载geojson数据,显示Polygon,自定义填充色、边框等。fill的参数:fill-antialias,fill-color,fill-opacity,fill-outline-color,fill-pattern,fill-sort-key,fill-translate,fill-translate-anchor,visib…

C learning_6

目录 语句的种类 C语言&#xff1a;结构化是程序设计语言 顺序结构&#xff1a; 选择结构(分支结构): 循环结构&#xff1a; while语句中的break和continue 语句的种类 1.表达式语句&#xff1a;表达式语句是指一个表达式后面跟随一个分号的语句。 #include<stdio.h&g…

cookie劫持与明文密码发送

一&#xff0c;目的&#xff1a; 1.已经取得web权限&#xff0c;查看数据库后发现md5密码太复杂无法破解&#xff0c;想要窃取网站后台的cookie或者一个账户和明文密码 2.思路1: 准备一个xss平台&#xff0c;把script脚本放在admin登录后可以看的资源文件里&#xff0c;把cook…

Tomcatd的详细介绍以及--手写 MyWebServer.java

Tomcat 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/ WEB 开发介绍 1. WEB&#xff0c;在英语中 web 表示网/网络资源(页面,图片,css,js)意思&#xff0c; 它用于表示 WEB 服务器(主机)供浏览器访问的资源 2. WEB 服务器(主机)上供外界访问的 Web 资源分为&…

java类图与代码实例

在 Java编程中&#xff0c;类图是一个非常重要的概念。类图的作用是用来展示类的结构以及类之间的关系。通过类图&#xff0c;可以很方便地展示出对象之间的关系。下面我将使用实例来演示一下我在学习 Java时的类图。 首先我们来看一下我们使用过的类图。 现在&#xff0c;我会…

【Linux】网络配置ifonfig解读

1、配置文件位置 在Linux系统中&#xff0c;IP地址的配置信息通常存储在网络接口配置文件中。不同的发行版可能会将这些文件存放在不同的位置。 以较为流行的Ubuntu和CentOS为例&#xff1a; Ubuntu系统&#xff1a;网络接口配置文件位于/etc/network/interfacesCentOS/RHEL…

Linux之进程知识点

一、什么是进程 进程是一个运行起来的程序。 问题思考&#xff1a; ❓ 思考&#xff1a;程序是文件吗&#xff1f; 是&#xff01;都读到这一章了&#xff0c;这种问题都无需思考&#xff01;文件在磁盘哈。 本章一开始讲的冯诺依曼&#xff0c;磁盘就是外设&#xff0c;和内…

春秋云境:CVE-2022-28060(SQL注入)

目录 一、题目 二、bp抓包跑sqlmap 一、题目 介绍&#xff1a; Victor CMS v1.0 /includes/login.php 存在sql注入 进入靶场&#xff1a; 官方给出的应该是登录界面 admin登录看看 是空白页面 不过看包头应该是POST方式&#xff1a; 二、bp抓包跑sqlmap burp抓包&#xff…

程序员如何把ChatGPT用到开发中

问&#xff1a;ChatGPT是程序员的好帮手&#xff1f;还是要干掉程序员&#xff1f; ChatGPT现在如何了&#xff1f; ChatGPT最近火到不行&#xff0c;在短短几个月时间里&#xff0c;OpenAI打造的ChatGPT就从一个弱小无助的AI聊天程序发展成几乎无所不知、无所不能的强大AI大…

Servlet 详细介绍的代码实列,以及Servlet 流程图和Servlet 流程分析和 @WebServlet源码分析

目录 动态 WEB 开发核心-Servlet 官方文档 对Java Web 技术体系的流程图改造说明(细化).[整体的概念] 什么是 Servlet Servlet(java 服务器小程序)&#xff0c;它的特点: Servlet 在 JavaWeb 项目位置 Servlet 基本使用 编写类HelloServlet去实现 Servlet 接口 在web.…

C#基于ASP.NET实现的共享笔记服务系统

共享笔记服务系统需要实现的功能包括用户的管理&#xff0c;以及笔记信息的管理和使用等。 用户用户需要注册激活&#xff0c;添加自己的个人信息&#xff0c;用户姓名&#xff0c;年龄&#xff0c;性别&#xff0c;民族&#xff0c;身份证号&#xff0c;用户证编号&#xff0c…

QGroungControl在QT中源码编译(包括配置环境)

一、环境配置 VS2019 Qt 5.15.2 1、安装 我原先的Qt版本是5.12的&#xff0c;在编译源码的时候会出错&#xff0c;提示最少需要5.15版本的&#xff0c;于是卸载原来的Qt重新安装5.15.2版本的&#xff01; 网上说5.15以及以上版本的只能在线安装了&#xff0c;所以我参考QT5.…

【hello Linux】详解各种缓冲区

目录 两种缓冲区的说明 用户级缓冲区&#xff1a; 数据如何从用户级缓冲区——>文件内核缓冲区&#xff1f; 刷新策略&#xff1a;对于各种文件的 了解了各种知识之后&#xff0c;使用代码来进行更深理解的认识&#xff1a; Linux&#x1f337; 两种缓冲区的说明 先用一张…

ROS学习笔记(八):ROS2

ROS学习笔记&#xff08;八&#xff09;&#xff1a;ROS2 ROS1存在的问题ROS2ROS2的设计目标ROS2的系统架构ROS2的关键中间件——DDS ROS2的通信模型 ROS1存在的问题 ROS&#xff08;一般ROS均指ROS1&#xff09;经过多年的发展&#xff0c;已成为机器人领域的重要的工具与平台…

【社区图书馆】《uni-app跨平台开发与应用》读书随想录

目录 导言 读书感悟 《uni-app跨平台开发与应用》(从入门到实践)图书目录 作者简介 导言 最近我读了一本关于uni-app跨平台开发与应用的书籍&#xff0c;名为《uni-app跨平台开发与应用从入门到实践》。这本书让我对uni-app跨平台开发与应用有了更深入的了解&#xff0c;作…