435. 无重叠区间

bool f(const vector<int>&a,const vector<int>&b) {
    if(a[0]==b[0])return a[1]>b[1];return a[0]<b[0];
}
class Solution {
public:
    int eraseOverlapIntervals(vector<vector<int>>& v) {
        int res = 0;
        sort(v.begin(),v.end(),f);
        for ( int i = 1 ; i < v.size(); i ++ ) {
            cout << v[i][0] << v[i][1] << endl;
            if ( v[i][0] >= v[i-1][1] ) {
            } else {
                res ++ ;
                // v[i][1] = min(v[i][1],v[i-1][1]);
            }
        }
        return res;
    }
};

不会做,不知道怎么处理这种情况

 -------  -------  ------- -------
====== ======= ====== ======= =====

需要移除区间的最小数量,使剩余区间互不重叠 -> 求最大的不交叉区间个数

bool f(const vector<int>&a,const vector<int>&b) {
    return a[1]<b[1];
}
class Solution {
public:
    int eraseOverlapIntervals(vector<vector<int>>& v) {
        int cnt = 1;
        sort(v.begin(),v.end(),f);
        int rend = v[0][1];
        for ( int i = 1 ; i < v.size(); i ++ ) {
            if (rend <= v[i][0]) {
                rend = v[i][1];
                cnt ++ ;
            }
        }
        return v.size() - cnt;
    }
};

通用技巧,求不重合区间的最大个数