[Leetcode 435][Medium]-无重叠区间-贪心

目录

一、题目描述

二、整体思路

三、代码


一、题目描述

题目地址

二、整体思路

        要求移除区间的最小个数,也就是要求使得剩余区间互不重叠的最大区间数。

        可以先将区间按右端点的值进行升序排序,然后遍历数组,在此基础上保留左端点>=最小右端点的值的区间,再把最小右端点更新为当前的右端点的值。这样我们可以只判断遍历到的区间的左端点是否会与保留的区间的右端点产生重合的情况。

        

三、代码

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        if(intervals.length==1){
            return 0;
        }
        Arrays.sort(intervals,new Comparator<int[]>(){
            public int compare(int[] s1,int s2[]){
                return s1[1]-s2[1];
            }
        });
        int res=1;
        int right=intervals[0][1];
        for(int i=1;i<intervals.length;i++){
            if(intervals[i][0]>=right){
                res++;
                right=intervals[i][1];
            }
        }
        return intervals.length-res;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值