【题目描述】
题目链接:点击这里
【思路分析】
贪心规律:
算法思路:
举例:
关于二维向量排序问题:点击这里
其实只有两列的二维向量用pair更好,正如之前这道题就是用pair写的
class Solution {
public:
int findMinArrowShots(vector<vector<int>>& points) {
if(points.size()==0) //传入数据可能为空,直接返回0
return 0;
//按气球区间的左端点从小到大排序
sort(points.begin(),points.end());
int shoot_num = 1; //初始化弓箭手数量为1
int shoot_begin = points[0][0]; //初始化射击区间,即为第一个气球的两端
int shoot_end = points[0][1];
for(int i=1;i<points.size();i++) {
if(points[i][0]<=shoot_end) { //注意<=
shoot_begin = points[i][0];
if(points[i][1]<shoot_end)
shoot_end = points[i][1];
}
else {
shoot_num++;
shoot_begin = points[i][0];
shoot_end = points[i][1];
}
}
return shoot_num;
}
};