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);
    }
}
相关推荐
007php00713 分钟前
mac笔记本中在PHP中调用Java JAR包的指南
java·ide·python·面试·职场和发展·pycharm·php
sheji341621 分钟前
【开题答辩全过程】以 母婴店购物系统为例,包含答辩的问题和答案
java
哪里不会点哪里.22 分钟前
Spring 中常用注解详解
java·后端·spring
苦藤新鸡22 分钟前
36.二叉树的中序遍历(递归)
力扣
草莓熊Lotso26 分钟前
Qt 控件美化与交互进阶:透明度、光标、字体与 QSS 实战
android·java·开发语言·c++·人工智能·git·qt
小妖66638 分钟前
javascript 舍去小数(截断小数)取整方法
开发语言·前端·javascript
Amber76240 分钟前
嵌入式C函数参数设计深度解析:指针与值传递的实战艺术
c语言·开发语言
青山是哪个青山1 小时前
C++ 核心基础与面向对象 (OOP)
开发语言·c++
小明同学011 小时前
[C++进阶]深入理解二叉搜索树
开发语言·c++·git·visualstudio
zbguolei1 小时前
Springboot上传文件与物理删除
java·spring boot·后端