leetcode 合并区间 java

  1. ArrayList<int[]> merged = new ArrayList<>();来定义数组的list

  2. 将数组进行排序 Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));

  3. 如果前面的末尾>=后面的初始,那么新的currentInterval的末尾=这两个数组末尾的最大值,即

    if(currentInterval[1]>=intervals[i][0]){
    //res[i][0]=intervals[i][0];
    currentInterval[1]=Math.max(intervals[i][1],currentInterval[1]);
    }

  4. 否则,新的currentInterval直接等于intervals[i];

  5. 循环结束之后,只是对最后一个区间进行了判断,但是没有加进merged中,因此要把最后一个区间加进去。

  6. 转换成数组形式 merged.toArray(new int[merged.size()][]);

    class Solution {
    public int[][] merge(int[][] intervals) {
    int len = intervals.length;
    if(len == 0) {
    return new int[0][0];
    }

    复制代码
         //按照每个区间的起始值进行排序
         Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));
         ArrayList<int[]> merged = new ArrayList<>();
         int[] currentInterval = intervals[0];
        //int[][] res = new int[len][intervals[len-1].length];
         
        for(int i =1; i<len;i++){
             // res[i][0]=intervals[i][0];
             // res[i][1]=intervals[i][1];
             if(currentInterval[1]>=intervals[i][0]){
                 //res[i][0]=intervals[i][0];
                 currentInterval[1]=Math.max(intervals[i][1],currentInterval[1]);
             }else{
                 merged.add(currentInterval);
                 currentInterval = intervals[i];
             }
         }
    
        // 添加最后一个区间
        merged.add(currentInterval);
        return merged.toArray(new int[merged.size()][]);
     }

    }

相关推荐
身如柳絮随风扬3 小时前
Java中的CAS机制详解
java·开发语言
-dzk-4 小时前
【代码随想录】LC 59.螺旋矩阵 II
c++·线性代数·算法·矩阵·模拟
风筝在晴天搁浅5 小时前
hot100 78.子集
java·算法
Jasmine_llq5 小时前
《P4587 [FJOI2016] 神秘数》
算法·倍增思想·稀疏表(st 表)·前缀和数组(解决静态区间和查询·st表核心实现高效预处理和查询·预处理优化(提前计算所需信息·快速io提升大规模数据读写效率
超级大只老咪5 小时前
快速进制转换
笔记·算法
m0_706653235 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你915 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
qq_423233906 小时前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder1236 小时前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_715575346 小时前
分布式任务调度系统
开发语言·c++·算法