【Leetcode】435. 无重叠区间 Medium
435. 无重叠区间
给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
非常非常经典的一题
可以使用贪心来解决这类区间问题
class Solution { public: int eraseOverlapIntervals(vector<vector<int>>& intervals) { sort(intervals.begin(),intervals.end(),[](vector<int>a,vector<int>b){ return a[1]<b[1]; }); int i = 0, cnt = 0; while(i < intervals.size()) { int j = i + 1; for (; j < intervals.size(); ++j) { if (intervals[j][0] >= intervals[i][1]) break; cnt += 1; } i = j; } return cnt; } };
复杂度O(nlog n), 前面排序是O(nlogn),后面的循环是O(n)
(代码不知为何现在有的时候会TLE, 一年前都是可以跑通的。 不过不必在意, 官方的代码也TLE...离大谱)