贪心算法---无重叠区间

题目:给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠

思路:将intervals数组按照左边界从小到大进行排序,用count记录无交叉的区间数量。遍历数组,如果正在遍历的区间与上一个区间有重叠,则将该区间的右边界更新为两个区间的最小右边界。如果正在遍历的区间与上一个区间无重叠,则count+1。最后用数组长度减去count就是无重叠区间数量。

代码:

java 复制代码
    public int eraseOverlapIntervals(int[][] intervals) {
        Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0]));
        int count=1;//记录非交叉区间数量
        for(int i=1;i<intervals.length;i++){
            if(intervals[i][0]>=intervals[i-1][1]){//两个区间不重叠
                count++;
            }
            else{;//如果重叠,则把右边界改为这两个区间的最小右边界
                intervals[i][1]=Math.min(intervals[i][1],intervals[i-1][1]);
            }
        }
        return intervals.length-count;
    }
相关推荐
看我眼色行事^ \/ ^1 小时前
2024.05.11 360春招WEB前端编程题
算法
来一碗刘肉面1 小时前
有向无环图 DAG(描述表达式)
数据结构
一只肥瘫瘫1 小时前
编码器 PLL 角度与速度观测器原理
人工智能·算法
Nil2082 小时前
leetcode 146LRU缓存
算法·leetcode·缓存
郝学胜_神的一滴2 小时前
干货版《算法导论》18:遍历增删原理、时间复杂度与集合序列实现全解
数据结构·算法
-dzk-3 小时前
【滑动窗口】LC 3.无重复字符的最长子串
算法·滑动窗口
zzxdear3 小时前
用 OR-Tools CP-SAT 求解最简单的柔性作业车间调度(FJSP)
算法
luj_17683 小时前
变频技术核心原理揭秘
服务器·c语言·开发语言·经验分享·算法
rannn_1113 小时前
【力扣hot100】图论专题+模板|DFS、BFS、拓扑排序...
java·算法·leetcode·深度优先·图论
_Narcissus_3 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法