合并区间【贪心算法】

  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 分钟前
leetcode算法(104.二叉树的最大深度)
数据结构·算法·leetcode·二叉树
机器学习之心HML19 分钟前
鲸鱼算法(WOA)优化Kriging模型
算法
DYS_房东的猫27 分钟前
《 C++ 零基础入门教程》第6章:模板与 STL 算法 —— 写一次,用万次
开发语言·c++·算法
Tim_1028 分钟前
【算法专题训练】37、前缀树&二叉树
算法
NineData42 分钟前
第三届数据库编程大赛-八强决赛成绩揭晓
数据库·算法·代码规范
雍凉明月夜1 小时前
深度学习之目标检测yolo算法Ⅱ(v4)
深度学习·算法·yolo·目标检测
FAFU_kyp1 小时前
Rust 的 引用与借用
开发语言·算法·rust
永远都不秃头的程序员(互关)2 小时前
【K-Means深度探索(一)】数据炼金术第一步:从零手撕K-Means聚类算法
算法·kmeans·聚类
我想回家种地2 小时前
算法期末复习
算法
rgeshfgreh2 小时前
MPPI算法实战:运动规划新利器
算法