代码随想录算法训练营第三十六天| 435. 无重叠区间、763.划分字母区间、56. 合并区间

435. 无重叠区间

题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

解题思路:按左边界进行由小到大排序,然后前一个的右边界和后一个的左边界相比,看是否相交,如果相交,取右边界较小的,因为不容易跟后面的相交。

java:

class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals, (a,b)-> {
            return Integer.compare(a[0],b[0]);
        });
        int remove = 0;
        int pre = intervals[0][1];
        for(int i = 1; i < intervals.length; i++) {
            if(pre > intervals[i][0]) {
                remove++;
                pre = Math.min(pre, intervals[i][1]);
            }
            else pre = intervals[i][1];
        }
        return remove;
    }
}

你可能感兴趣的:(算法)