LeetCode 452. Minimum Number of Arrows to Burst Balloons
来源:互联网 发布:华西金手指软件下载 编辑:程序博客网 时间:2024/06/09 23:55
Description
There are a number of spherical balloons spread in two-dimensional space. For each balloon, provided input is the start and end coordinates of the horizontal diameter. Since it’s horizontal, y-coordinates don’t matter and hence the x-coordinates of start and end of the diameter suffice. Start is always smaller than end. There will be at most 104 balloons.
An arrow can be shot up exactly vertically from different points along the x-axis. A balloon with xstart and xend bursts by an arrow shot at x if xstart ≤ x ≤ xend. There is no limit to the number of arrows that can be shot. An arrow once shot keeps travelling up infinitely. The problem is to find the minimum number of arrows that must be shot to burst all balloons.Example:
Input:
[[10,16], [2,8], [1,6], [7,12]]
Output:
2
Explanation:
One way is to shoot one arrow for example at x = 6 (bursting the balloons [2,8] and [1,6]) and another arrow at x = 11 (bursting the other two balloons).
Solution
题意为:给定一些大小不等的气球,用区间范围来表示气球的大小,可能会有重叠区间,要求用最少的箭来将所有的气球打爆。因为局部最优解就等于全局最优解,故可应用贪婪算法。首先给区间排序,然后将箭数初始化为1,此箭能覆盖的最远位置就是第一个气球的结束点,用变量end来表示。接着开始遍历剩下的气球,如果当前气球的开始点小于等于end,说明跟之前的气球有重合,之前那一箭也可以打到当前的气球,此时将end的位置更新为两个气球结束点之间较小的那个,即当前气球和之前气球的重合点,然后继续看后面的气球;如果某个气球的起始点大于end了,说明前面的箭无法覆盖到当前的气球,则箭数加1,end设为当前气球的结束点。如此遍历得到最小箭数。
class Solution {public: int findMinArrowShots(vector<pair<int, int>>& points) { if (points.empty()) return 0; sort(points.begin(), points.end()); int n_arr = 1, end = points[0].second; for (int i = 1; i < points.size(); ++i) { if (points[i].first <= end) { end = min(end, points[i].second); } else { ++ n_arr; end = points[i].second; } } return n_arr; }};
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- 【leetcode】452. Minimum Number of Arrows to Burst Balloons【M】
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- Leetcode 452. Minimum Number of Arrows to Burst Balloons[medium]
- [leetcode] 452. Minimum Number of Arrows to Burst Balloons
- Leetcode-452. Minimum Number of Arrows to Burst Balloons
- 【LeetCode】 452. Minimum Number of Arrows to Burst Balloons
- [Leetcode] 452. Minimum Number of Arrows to Burst Balloons
- [leetcode]452. Minimum Number of Arrows to Burst Balloons
- [LeetCode]452. Minimum Number of Arrows to Burst Balloons
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- 452. Minimum Number of Arrows to Burst Balloons| Leetcode Greedy
- 【LeetCode】452. Minimum Number of Arrows to Burst Balloons
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- leetcode 452. Minimum Number of Arrows to Burst Balloons
- Leetcode 452. Minimum Number of Arrows to Burst Balloons
- Java程序员学习的6个技巧
- 分享一个查看Hdfs目录下文件大小的脚本,支持排序
- 20条超级有用的Java程序片段
- 动态规划斐波那契数列
- Linux下编码安装Apache全过程
- LeetCode 452. Minimum Number of Arrows to Burst Balloons
- Mac 配置FFmpeg环境
- Git速查手册(第二版)
- 进度条控件JProgressBar的使用
- 第五届蓝桥杯javaB组—切面条
- 2016年上半年信息系统项目管理师真题之上午题小虎趣味解答第26-30题
- Android透明状态栏与沉浸模式全解
- JAVA多线程之——CopyOnWriteArrayList
- mysql的配置&备份&主从