2022-10-29 【我的刷题日记】435无重叠区间

思路:本题也就是要求重叠区间的数量,因为题目给的一系列区间的无序的,我们需要先进行排序才能进行遍历处理,我们可以按左边界进行从小到大的排序,然后再从左到右进行逐个的遍历,判断是否是重复区间(上一个区间的下线大于下一个区间的上线),然后进行对于区间下线进行更新,最好自己按照代码画图模拟一下,这题比较抽象

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
//        按照左边界从小到大排序
        Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));
        int res = 0;
        int pre = intervals[0][1];
//        从左往右 确定右边界是否重叠
        for (int i = 1; i < intervals.length;i++){
//            上一个区间的右上线如果大于下一个区间的左下线,则重叠
            if (pre > intervals[i][0]){
//                重叠区间加一 把上一个区间的值更改为这两个区间中更小的上线
                res++;
                pre = Math.min(pre,intervals[i][1]);
            }else {
//                如果不重叠 直接更新 然后进行下一轮判断
                pre = intervals[i][1];
            }
        }
        return res;
    }
}

你可能感兴趣的:(2022-10-29 【我的刷题日记】435无重叠区间)