2023.8.3
本题和引爆气球 这题非常类似,利用同样的思路可以解决,代码如下:
class Solution {
public:
static bool cmp(vector<int>& a , vector<int>& b)
{
if(a[0] == b[0]) return a[1] < b[1];
return a[0] < b[0];
}
int eraseOverlapIntervals(vector<vector<int>>& intervals) {
int ans = 0;
if(intervals.size() == 1) return ans;
sort(intervals.begin(),intervals.end(),cmp);
for(int i=1; i<intervals.size(); i++)
{
//当发生重叠时
if(intervals[i][0] < intervals[i-1][1])
{
ans++;
intervals[i][1] = min(intervals[i-1][1],intervals[i][1]);
}
}
return ans;
}
};
想象一下,当发生重叠时,我们希望移除前一个集合还是后一个集合,这题就很好做了。