//核心思想:最小化问题规模分析法 左倾i和右倾i
class Solution {
public:
//如果为真返回turn 后面根据返回的结果的真假 来决定谁在前谁在后 这就实现了排序
bool cmp(std:pair a,std:pair b){
return a.first < b.first;
}
int findMinArrowShots(std::vector<pair<int,int>> point){
if(point.size() == 0){
return 0;
}
int shoot_num = 1;
int shoot_begin =point[0].first;
int shoot_end = point[0].end;
std::sort(point.begin(),point.end(),cmp);
for(int i;i< point.size();i++){
//i位置的头在shoot的尾之前 就有机会同一个shoot
if( point[i].first <= shoot_end ){
shoot_begin = point[i].first;
if(shoot_end > point[i].second){
shoot_end = point[i].second;
}
}else{
shoot_num++;
//"左倾"的i 就是进步的i 相对来说 上面的if分支的i是“右倾”保守主义的i
shoot_begin = point[i].first;
shoot_end = point[i].second;
}
}
return shoot_num;
}
};