【LeetCode435】-无重叠区间

实现思路

贪心的思想在于,如果两区间没有交集则正常更新区间的end,如果两区间有交集end取两区间的最小值,消除区间的个数+1,这么做可以使得满足不重叠的条件但又为下面区间不重叠留出了更大的范围

实现代码

bool cmp(const vector<int> &a,const vector<int> &b){
    
    
    return a[0]<b[0] ||(a[0]==b[0]&&a[1]<b[1]);
}
class Solution {
    
    
public:
    int eraseOverlapIntervals(vector<vector<int>>& intervals) {
    
    
        int n=intervals.size();
        if(n<2) return 0;
        sort(intervals.begin(),intervals.end(),cmp);
        int time=0;

        int begin=intervals[0][0];
        int end=intervals[0][1];
        int ff=0;
        for(int i=1;i<intervals.size();i++){
    
    
            if(intervals[i][0]<end){
    
    
                time++;
                end=min(end,intervals[i][1]);
            }
            else{
    
    
                end=intervals[i][1];
            }    
        }
        return time;
    }
};

提交结果及分析

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44944046/article/details/113803046