合并区间【贪心算法】

  1. 合并区间
    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        List<int[]> res = new ArrayList<>();
        Arrays.sort(intervals, (a, b) -> a[0] - b[0]);

        res.add(intervals[0]);
        for (int i = 1; i < intervals.length; i++) {
            int[] cur = intervals[i];
            int[] pre = res.get(res.size() - 1);//res里的最后一个元素
            
            if (cur[0] > pre[1]) {
                res.add(cur);
            } else {
                pre[1] = Math.max(cur[1], pre[1]);//  !!  取最大的右边界
            }
        }
        return res.toArray(new int[res.size()][]);//将集合(ArrayList动态数组)转化为二维数组
    }
}
相关推荐
风中的微尘4 小时前
39.网络流入门
开发语言·网络·c++·算法
西红柿维生素5 小时前
JVM相关总结
java·jvm·算法
ChillJavaGuy7 小时前
常见限流算法详解与对比
java·算法·限流算法
sali-tec7 小时前
C# 基于halcon的视觉工作流-章34-环状测量
开发语言·图像处理·算法·计算机视觉·c#
你怎么知道我是队长8 小时前
C语言---循环结构
c语言·开发语言·算法
艾醒8 小时前
大模型面试题剖析:RAG中的文本分割策略
人工智能·算法
纪元A梦8 小时前
贪心算法应用:出租车调度问题详解
贪心算法
纪元A梦10 小时前
贪心算法应用:K-Means++初始化详解
算法·贪心算法·kmeans
_不会dp不改名_10 小时前
leetcode_21 合并两个有序链表
算法·leetcode·链表
mark-puls10 小时前
C语言打印爱心
c语言·开发语言·算法