貪心的方式是按照區間右端點排序,遇到區間能選就選,不能選則略過去,(爲什麼要按右端點排序,因爲我們貪心的認爲,區間最早結束,那麼收益越高)
如何證明我們的貪心解一定是最優解?
首先貪心解是滿足題意的一組解,其次假設一個最優解不是貪心解,一定可以按貪心的方式調整爲最優解
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;
}
};