问题描述

在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。

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

给你一个数组 points ,其中 points [i] = [xstart,xend] ,返回引爆所有气球所必须射出的最小弓箭数。

示例 1:

输入:points = [[10,16],[2,8],[1,6],[7,12]]
输出:2
解释:对于该样例,x = 6 可以射爆 [2,8],[1,6] 两个气球,以及 x = 11 射爆另外两个气球

示例 2:

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

示例 3:

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

示例 4:

输入:points = [[1,2]]
输出:1

示例 5:

输入:points = [[2,3],[2,3]]
输出:1

提示:

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

代码

思路1:按照第一个数排序

class Solution {public int findMinArrowShots(int[][] points) {if(points==null||points.length==0)return 0;Arrays.sort(points, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if (o1[0]==o2[0]) { if(o1[1]>o2[1])return 1;if(o1[1]<o2[1]) {return -1;}return 0;}if(o1[0]<o2[0])return -1;return 1;}});int num=1;int end=points[0][1];for(int i=1;i<points.length;i++) {if(points[i][1]<end) {end=points[i][1];}if(points[i][0]>end) {end=points[i][1];num++;}}return num;}
}

思路2:按照第二个数排序

class Solution {public int findMinArrowShots(int[][] points) {if(points==null||points.length==0)return 0;Arrays.sort(points, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {if(o1[1]<o2[1])return -1;return 1;}});int num=1;int end=points[0][1];for(int i=1;i<points.length;i++) {if(points[i][0]>end) {end=points[i][1];num++;}}return num;}
}

Leetcode452. 用最少数量的箭引爆气球(排序+贪心)相关推荐

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

    在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐标总是小于结束坐标.平面 ...

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

    在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐标总是小于结束坐标.平面 ...

  3. leetcode 452. 用最少数量的箭引爆气球(贪心算法)

    在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了.开始坐标总是小于结束坐标. 一 ...

  4. 贪心法—LeetCode 452 用最少数量的箭引爆气球

    用最少数量的箭引爆气球 题目: 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了 ...

  5. c语言贪心算法合并箭,贪心算法:用最少数量的箭引爆气球

    ❝ 通知:一些录友表示经常看不到每天上午的文章,现在公众号已经不按照发送时间推荐了,而是根据一些规则乱序推送,所以可能关注了「代码随想录」也一直看不到文章,建议把「代码随想录」设置星标哈,设置星标之后 ...

  6. Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

    860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...

  7. 2021.05.20最少数量的箭引爆气球

    2021.05.20最少数量的箭引爆气球 题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以纵坐标并不重要,因此只要知道开始和 ...

  8. 代码随想录35——贪心:860柠檬水找零、406根据身高重建队列、452用最少数量的箭引爆气球

    文章目录 1.860柠檬水找零 1.1.题目 1.2.解答 2.406根据身高重建队列 2.1.题目 2.2.解答 3.452用最少数量的箭引爆气球 3.1.题目 3.2.解答 1.860柠檬水找零 ...

  9. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  10. Java实现 LeetCode 452 用最少数量的箭引爆气球

    452. 用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够 ...

最新文章

  1. 初次体验hiphop-php
  2. 全球缺芯大潮中,以软代硬能否另辟蹊径?
  3. Microbiome:山大杜宗军团队揭示捕食性细菌新类群-慢生单胞菌目细菌独特的生境适应性...
  4. 成功解决pandas读取文件中不读取第一索引列
  5. xampp mysqli_query and后的条件不行_Java笔记不用!null作为判空条件
  6. MONGODB 集群架构 调整,增加延迟备份节点服务器,删除仲裁节点
  7. [引]生成加密和解密的密钥
  8. linux服务器监控zabbix,Linux监控之--使用ZABBIX监控web服务器
  9. Python自然语言处理 8 分析句子结构
  10. 48 Fixing relationship Problems with Humor 用幽默解决人际关系问题
  11. 蘑菇街防重复请求处理的实践与总结
  12. 复旦学子《可解释机器学习》中文版火了,完整PDF开发下载!
  13. verilog中always和initial的区别
  14. 华为云WeLink是什么软件?什么远程办公软件好用?
  15. 自学虚幻引擎图文笔记:如何在UE4中做积雪材质
  16. matlab图像拼接融合(四种方法)
  17. rabbitMQ的详细介绍
  18. 民航客运量变化趋势的多元线性回归模型--基于R(附R程序及讲解)
  19. SimpleDateFormat 参数
  20. ios 专业制作马甲包、解决审核不通过的各种疑难杂症

热门文章

  1. Oracle归档模式与非归档模式设置
  2. Linux 内核全系更新 3.6.2、3.5.7 等
  3. 如何去除图片连接的边框线
  4. AJAX 框架Jquery的使用方法
  5. bootstrap table 小计行_【2018/4/11】bootstrapTable添加一行
  6. 拓端tecdat|R语言连续时间马尔可夫链模拟案例 Markov Chains
  7. 拓端tecdat|sas神经网络:构建人工神经网络模型来识别垃圾邮件
  8. 初识循环神经网络(RNN)
  9. cannot import name ‘Imputer‘ from ‘sklearn.preprocessing‘
  10. 一个react项目案例02 注册和登陆实现原理分析