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

题目:给定一个区间的集合 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;
    }
相关推荐
Moniane19 小时前
FastGPT 与 MCP 协议概述
算法
草莓工作室19 小时前
数据结构7:栈和队列
c语言·数据结构
Meteor_cyx19 小时前
Day12 二叉树遍历
算法
加藤不太惠19 小时前
十大排序其六
算法·排序算法
前端小刘哥19 小时前
视频推拉流平台EasyDSS技术特点及多元应用场景剖析
算法
Brianna Home19 小时前
从零到一:用Godot打造2D游戏《丛林探险》
算法·游戏·性能优化·游戏引擎·bug·godot·动画
小欣加油20 小时前
leetcode 143 重排链表
数据结构·c++·算法·leetcode·链表
Camel卡蒙20 小时前
数据结构——字典树Trie(介绍、Java实现)
java·数据结构
courniche20 小时前
ECDH、ECDHE、ECDLP、ECDSA傻傻分不清?
算法·密码学
前端小刘哥20 小时前
超低延迟与高并发:视频直播点播平台EasyDSS在游戏直播场景的技术实践
算法