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;}
};
想象一下,当发生重叠时,我们希望移除前一个集合还是后一个集合,这题就很好做了。