无重叠区间【贪心算法】

  1. 无重叠区间
    给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。
复制代码
class Solution {
    public int eraseOverlapIntervals(int[][] intervals) {
        //先排序,按照左边界升序,注意这种方法如果左边界相等,则不予处理
        Arrays.sort(intervals, (a, b) -> {
            return Integer.compare(a[0], b[0]);
        });

        int result = 0;
        int pre = intervals[0][1];

        for (int i = 1; i < intervals.length; i++) {
            if (intervals[i][0] < pre) {//有重叠
                result++;//去除数量+1
                pre = Math.min(intervals[i][1], pre);//保留前面重叠区间右端点最小的整个区间。注意这里不可直接进行右端点的区间的局部更新!!
            } else {
                pre = intervals[i][1];//没有重叠,则右端点则保持正常
            }
        }
        return result;
    }
}
相关推荐
GalaxyPokemon25 分钟前
LeetCode - 148. 排序链表
linux·算法·leetcode
iceslime1 小时前
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
数据结构·c++·算法·算法设计与分析
aichitang20242 小时前
矩阵详解:从基础概念到实际应用
线性代数·算法·矩阵
OpenCSG2 小时前
电子行业AI赋能软件开发经典案例——某金融软件公司
人工智能·算法·金融·开源
dfsj660113 小时前
LLMs 系列科普文(14)
人工智能·深度学习·算法
薛定谔的算法4 小时前
《盗梦空间》与JavaScript中的递归
算法
kaiaaaa4 小时前
算法训练第十一天
数据结构·算法
?!7144 小时前
算法打卡第18天
c++·算法
springfe01014 小时前
构建大顶堆
前端·算法
凌辰揽月5 小时前
Web后端基础(基础知识)
java·开发语言·前端·数据库·学习·算法