题目描述:
解法一:
class Solution {
public:
static bool comp(vector<int>& a, vector<int>& b){
return a[0]<b[0];
}
int findMinArrowShots(vector<vector<int>>& points) {
if(points.empty()) return 0;
sort(points.begin(),points.end(),comp); //排列x_start
int eend=points[0][1]; //维护一个最远端
int res=1;
for(int i=1;i<points.size();i++){
if(points[i][0]<=eend)
eend=min(eend,points[i][1]); //更新最远端
else{
res++;
eend=points[i][1];
}
}
return res;
}
};
解法二:
class Solution {
public:
static bool comp(vector<int>& a, vector<int>& b){
return a[1]<b[1];
}
int findMinArrowShots(vector<vector<int>>& points) {
if(points.empty()) return 0;
sort(points.begin(),points.end(),comp); //排列x_end
int eend=points[0][1];
int res=1;
for(int i=1;i<points.size();i++){
if(points[i][0]>eend){ //更新最远端
eend=points[i][1];
res++;
}
}
return res;
}
};