思路:求移除区间的最小数量使区间不重叠,也就是找到区间中互不重叠的最大数量,首先按按每个区间的结束值进行升序排序,然后依次选取不重叠子区间即可。
class Solution {
public:
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
if(intervals.size()==0) return 0;
int n=intervals.size();
//对区间进行排序
sort(intervals.begin(),intervals.end(),[=](vector<int>a,vector<int>b){return a[1]<b[1];});
int x=intervals[0][1];
int res=1;
for(auto temp:intervals){
//区间不重叠
if(temp[0]>=x){
x=temp[1];
res++;
}
}
return n-res;
}
};