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);
    }
}
相关推荐
likuolei15 小时前
XQuery 完整语法速查表(2025 最新版,XQuery 3.1)
xml·java·数据库
雨中飘荡的记忆15 小时前
LangChain4j 实战指南
java·langchain
okseekw15 小时前
Java 中的方法:从定义到重载的完整指南
java
雨中飘荡的记忆15 小时前
深入理解设计模式之适配器模式
java·设计模式
用户849137175471615 小时前
生产级故障排查实战:从制造 OOM 到 IDEA Profiler 深度破案
java·jvm
雨中飘荡的记忆15 小时前
深入理解设计模式之装饰者模式
java·设计模式
雨中飘荡的记忆15 小时前
秒杀系统设计与实现
java·redis·lua
CryptoPP16 小时前
使用 KLineChart 这个轻量级的前端图表库
服务器·开发语言·前端·windows·后端·golang
18你磊哥16 小时前
chromedriver.exe的使用和python基本处理
开发语言·python
小坏讲微服务16 小时前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发