力扣-贪心-452 用最小数量的箭引爆气球
思路
按照起始位置排序,如果当前气球和前一个气球不重叠,那就加1箭;如果重叠了,需要更新当前气球的右侧位置,保证这未射出去的一箭可以把这两个重叠的气球都射下来
代码
class Solution {
public:
static bool cmp(vector<int> a, vector<int> b){
return a[0] < b[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
if(points.size() == 0) return 0;
sort(points.begin(), points.end(), cmp);
int res = 1;
for(int i = 1; i < points.size();i++){
if(points[i][0] > points[i-1][1]){
res++;
}else{
points[i][1] = min(points[i][1], points[i-1][1]);
}
}
return res;
}
};