LeetCode:合并区间

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals == null || intervals.length == 0){
            return new int[0][2];
        }

        //先按照左边界进行排序
        Arrays.sort(intervals, (a,b) -> Integer.compare(a[0],b[0]));
        //不知道最终有几个,使用动态扩容
        List<int[]> merged = new ArrayList<>();

        int[] currentInterval = intervals[0];
        merged.add(currentInterval);

        for(int[] nextInterval : intervals){
            //第一轮循环会重复测试一下第一个数组
            int currentEnd = currentInterval[1];
            int nextStart = nextInterval[0];
            int nextEnd = nextInterval[1];
            //判断是否重叠
            if(nextStart <= currentEnd){
                currentInterval[1] = Math.max(currentEnd,nextEnd);
            }else{
                currentInterval = nextInterval;
                merged.add(currentInterval);
            }
        }
        return merged.toArray(new int[merged.size()][]);
    }
}

动态扩容:

ArrayList先申请一个默认为0的原生数组elementData,存元素时申请一个默认容量为10的新数组,新数组满的时候,申请新数组长度为原来的1.5倍,将原来数组的东西通过System.arraycopy方法复制到新数组中,将旧数组交给垃圾回收器(GC)。

引用传递:

多个变量名共同管理内存里的同一个对象实体,最终看到的结果也同步改变。

相关推荐
alphaTao1 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid1122 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余11 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
罗西的思考12 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha601613 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘14 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天16 小时前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源17 小时前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang
老当益壮梁奶奶17 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
不会就选b18 小时前
算法日常・每日刷题--<BFS拓扑排序>4
算法