leetcode 452用少量的箭射爆气球

类似于区间调度问题,使用贪心算法:首先对所有气球按照起始坐标大小排序,然后每次总是优先选择起始坐标小的气球中的右边坐标,然后再选择下一个;

排完序之后,下一个可能有如上图所示几种情况,
1) 当next.end<t时,此时一定有next.start>start且next.start<t, 应该令t=next.end这样可以节省一支箭;
2) 当next.end>t且next.start<end, 此时一定可以射爆next,参考虚线最顶端的气球;
3) 当next.start>t时,此时一定需要增加一支箭来射穿next, 且当前的箭不能再多射中气球;
class Solution {
public:
static bool cmp(pair<int,int>a, pair<int,int>b ){
return a.first<b.first;
}
int findMinArrowShots(vector<pair<int, int>>& points) {
sort(points.begin(),points.end(),cmp);
int len=points.size();
//空points边界判定
if(len==) return ;
/***
1) 当next.end<t时,此时一定有next.start>start且next.start<t, 应该令t=next.end这样可以节省一支箭;
2) 当next.end>t且next.start<end, 此时一定可以射爆next,参考虚线最顶端的气球;
3) 当next.start>t时,此时一定需要增加一支箭来射穿next, 且当前的箭不能再多射中气球;***/
int t=points[].second;
int cnt=;
for(int i=;i<len;i++){
//1),2)可以认为下一个if不成立时选end最小值;
if(points[i].second<t){
t=points[i].second;
//cout<<"1: "<<t<<endl;
}
//符合3的情况,必须多一支箭
if(t<points[i].first){
cnt++;t=points[i].second;
//cout<<"2: "<<t<<endl;
}
}
return cnt;
}
};
leetcode 452用少量的箭射爆气球的更多相关文章
- [LeetCode] 452. Minimum Number of Arrows to Burst Balloons 最少箭数爆气球
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...
- [Leetcode 452] 最少需要射出多少支箭Minimum Number of Arrows to Burst Balloons 贪心 重载
[题目] There are a number of spherical balloons spread in two-dimensional space. For each balloon, pro ...
- LeetCode:用最少的箭引爆气球【452】
LeetCode:用最少的箭引爆气球[452] 题目描述 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道 ...
- Java实现 LeetCode 452 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够 ...
- Leetcode 452.用最少数量的箭引爆气球
用最少数量的箭引爆气球 在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐 ...
- [LeetCode] 312. Burst Balloons 爆气球
Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...
- [LeetCode] 452 Minimum Number of Arrows to Burst Balloons
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided ...
- 动态规划-击爆气球 Burst Balloons
2018-10-03 19:29:43 问题描述: 问题求解: 很有意思的题目,首先想到的是暴力遍历解空间,当然也用到了memo,可惜还是TLE,因为时间复杂度确实有点过高了,应该是O(n!). Ma ...
- leetcode常见算法与数据结构汇总
leetcode刷题之后,很多问题老是记忆不深刻,因此特意开此帖: 一.对做过题目的总结: 二.对一些方法精妙未能领会透彻的代码汇总,进行时常学习: 三.总结面试笔试常见题目,并讨论最优解法及各种解法 ...
随机推荐
- jquery ready load
jq 加载三种写法 $(document).ready(function() { // ...代码... }) //document ready 简写 $(function() { // ...代码. ...
- pat(B)_1001
1001 害死人不偿命的(3n+1)猜想 (15 分) 卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复 ...
- CDH中Oozie无法卸载
问题:HUE依赖Oozie 所以Oozie不能够卸载,好坑啊 解决思路: 重新装回来,但是不启动Oozie,节约一部分性能.
- 修改linux系统TCP连接数
修改linux系统TCP连接数 centOS 6.x (1)vi /etc/sysctl.conf (2)添加参数 net.nf_conntrack_max = 655360 (3)sysctl -p ...
- 标准C语言(10)
指针数组的每个存储区是一个指针类型的存储区,字符指针数组包含多个字符类型的指针,每个字符类型指针可以代表一个字符串.字符指针数组可以用来代表多个相关字符串,二维字符数组也可以用来记录多个相关字符串,通 ...
- Spring-data-jpa操作数据库环境配置
application.xml文件 <?xml version="1.0" encoding="UTF-8"?><beans xmlns=&q ...
- redis事务(转载)
原文地址:http://blog.csdn.net/hechurui/article/details/49508749 Redis事务 首先,Redis本身是单线程的. redis中的事务(trans ...
- Prometheus+Granfana
二.虚机(服务器)方式prometheus在虚机(服务器)中安装运行. 命令行启动在安装完成以后,可以直接在命令行启动.启动方式通常是: ./prometheus --config.file=prom ...
- BZOJ4641 基因改造[KMP]
这道题以前好像模拟的时候做过,当时不会做,于是用hash水过去了.. 正解是KMP,还是用当前字符与上一次相同字符位置的距离表示数组,于是数值相等时就代表相似.第一次出现用INF代替. 然后要匹配有多 ...
- PHP开启错误提示而不是单单返回500
方法一 修改php.ini文件和php-fpm.conf php.ini文件在我使用的发行版本/etc/php/<版本号>/cli/php.ini php-fpm.conf文件在/etc/ ...