贪心的方式是按照区间右端点排序,遇到区间能选就选,不能选则略过去,(为什么要按右端点排序,因为我们贪心的认为,区间最早结束,那么收益越高)
如何证明我们的贪心解一定是最优解?
首先贪心解是满足题意的一组解,其次假设一个最优解不是贪心解,一定可以按贪心的方式调整为最优解
class Solution {
public:
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
if(intervals.size()==0) return 0;
sort(intervals.begin(),intervals.end(),[](vector<int> &a, vector<int> &b){
return a[1]<b[1];
});
int count = 1, right = intervals[0][1];
for(auto interval:intervals){
if(interval[0]>=right){
count++;
right = interval[1];
}
}
return intervals.size()-count;
}
};