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);
    }
}
相关推荐
花生智源几秒前
Java实现Prompt工程的技巧——从模板到工程化,告别字符串拼接
java·人工智能
北冥you鱼1 分钟前
Go语言与默克尔树:区块链数据完整性的基石
开发语言·golang·区块链
折哥的程序人生 · 物流技术专研4 分钟前
Java 23 种设计模式:从踩坑到精通 | 番外:策略 vs 模板方法 —— 组合与继承的终极对决
java·策略模式·java面试·comparator·模版方法模式·java设计模式·从踩坑到精通
库克克11 分钟前
【C++】类和对象--this指针详解
java·开发语言·c++
SL_staff24 分钟前
JVS低代码完整源码解析:如何二次开发自己的表单组件?
java·低代码·vuex
JackieZhengChina26 分钟前
image-viewer-js 开源图片查看插件完整教程
开发语言·javascript·开源
QN1幻化引擎34 分钟前
Gravity-Anchored Cognitive Field Architecture: The DalinX V8/V10 Implementation
java·前端·算法
一生有你202035 分钟前
Spring AI ChatMemory 监控与排查:从指标到排错全链路
java·人工智能·spring
光影少年39 分钟前
react的View/Text/Image/ScrollView 常用组件注意事项
开发语言·前端·javascript·react.js·前端框架
程序员黎剑40 分钟前
我把算卦变成了一段if-else
java·vue.js·spring boot·后端·ai编程