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

题目:给定一个区间的集合 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;
    }
相关推荐
美式请加冰3 分钟前
字符串的介绍和使用
算法
北顾笙9805 分钟前
测开准备-day03数据结构力扣
数据结构
m0_733612219 分钟前
C++20概念(Concepts)入门指南
开发语言·c++·算法
仰泳的熊猫11 分钟前
题目2571:蓝桥杯2020年第十一届省赛真题-回文日期
数据结构·c++·算法·蓝桥杯
我喜欢就喜欢15 分钟前
基于离散余弦变换的感知哈希算法:原理、实现与工程实践
算法·哈希算法
尽兴-18 分钟前
Redis7 底层数据结构解析
数据结构·数据库·缓存·redis7
2301_8073671937 分钟前
C++中的模板方法模式
开发语言·c++·算法
PhotonixBay1 小时前
共聚焦显微镜的结构组成与应用
人工智能·算法·机器学习
逆境不可逃1 小时前
LeetCode 热题 100 之 33. 搜索旋转排序数组 153. 寻找旋转排序数组中的最小值 4. 寻找两个正序数组的中位数
java·开发语言·数据结构·算法·leetcode·职场和发展
tankeven1 小时前
HJ137 乘之
c++·算法