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;
}
};
通用技巧,求不重合区间的最大个数