解题思路
先排序,按照Xstart大小对所有气球的坐标进行排序
因为Xstart大小已经确定,所以我们再来看Xend
当只有一个气球时,不用纠结,只需要一个箭
当气球数量大于1时,采用贪心算法,比较数组中前两个气球的Xend,选择小一点的,记为n,之后n再与下一个气球的Xend进行比较,直到与下一个气球完全没有交集,即n<Xstart,此时,箭的数量+1
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
int s=points.size(),n=0,k=0;
sort(points.begin(),points.end());
n=points[0][1];
if(s==1) return 1;
for(int i=1;i<s;i++){
if(n>=points[i][0]){
n=min(points[i][1],n);
}else{
k++;
n=points[i][1];
}
}
return k+1;
}
};