题目描述:链接
解题思路:(和leetcode435问题很像,435的解题思路)
1、首先先按直径的右边坐标从小到大排序
2、变量p记录最前面一个的气球的右边坐标,只要当前气球左边的坐标大于p,则它们就能一起被射穿,否则p更新为当前坐标的右边坐标(即当前气球作为它们那一组的最前面的一个气球)
C++代码实现
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
int s = points.size();
if(s < 2){
return s;
}
sort(points.begin(), points.end(), [](const auto& u, const auto&v){
return u[1] < v[1];
});
int res = 1;
int prev = points[0][1];
for(const vector<int>& point : points){
if(point[0] > prev){
res += 1;
prev = point[1];
}
}
return res;
}
};