【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...离大谱)

 

posted @ 2022-02-23 00:05  鱼儿冒个泡  阅读(28)  评论(0编辑  收藏  举报