56.合并区间

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        // 对 intervals 数组按照每个区间的开始位置进行排序
        Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
        
        int len = intervals.length;
        // 创建结果数组 res,初始化长度为 intervals 的长度
        int[][] res = new int[len][2];
        // 将第一个区间作为结果数组的初始元素
        res[0] = intervals[0];
        // 初始化结果数组的索引
        int index = 0;

        // 从第二个区间开始遍历 intervals 数组
        for (int i = 1; i < len; i++) {
            // 如果当前区间的左侧大于结果数组中的右侧
            if (intervals[i][0] > res[index][1]) {
                // 将当前区间作为结果数组的新元素
                res[++index] = intervals[i];
            } else {
                // 否则,将当前区间的结束时间与结果数组中最后一个区间的结束时间取最大值
                res[index][1] = Math.max(intervals[i][1], res[index][1]);
            }
        }
        
        // 结果数组只需要 index+1 个元素,因为最后一个元素后面的元素都被合并了
        return Arrays.copyOf(res, index + 1);
    }
}
相关推荐
earthzhang20216 小时前
【2051】【例3.1】偶数
开发语言·数据结构·算法·青少年编程·图论
天天摸鱼的java工程师6 小时前
别再写那些重复代码了!8年Java老兵教你用 Hutool 提升开发效率
java·后端
喝杯绿茶6 小时前
springboot中的事务
java·spring boot·后端
专注VB编程开发20年6 小时前
.NET Reflector反编绎,如何移除DLL中的一个公开属性
开发语言·c++·c#
麦兜*6 小时前
多阶段构建:打造最小化的 Spring Boot Docker 镜像
java·spring boot·后端·spring cloud·docker
oak隔壁找我7 小时前
Spring Boot Starter 入门教程
java·后端
YoungP7 小时前
【Effective Java 条目一】-- 用静态工厂方法替代构造器
java
高山上有一只小老虎7 小时前
求最大连续bit数
java·算法
vxiam14xxx7 小时前
【Java Swing 项目】java 聊天系统
java·开发语言·python
Dylan的码园7 小时前
以二叉树问题为基础的递归调试学习(上)
java·学习·算法·leetcode·r-tree