leecode 56. 合并区间-java toArray用法

题目所属分类

二维数组的按照排序大小的方法要记住 Arrays.sort(a, (i1, i2) -> (i1[0] == i2[0] ? i2[1] - i1[1] : i1[0] - i2[0]));
同时还有list集合转为数组的形式res.toArray(new int[0][0])
Java泛型集合的toArray方法
在这里插入图片描述
在这里插入图片描述

原题链接

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。

代码案例:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

题解

在这里插入图片描述

class Solution {
    public int[][] merge(int[][] a) {
           List<int[]> res = new ArrayList<>();
           if(a.length ==0 ) return null;
           Arrays.sort(a, (i1, i2) -> (i1[0] == i2[0] ? i2[1] - i1[1] : i1[0] - i2[0]));
           int l = a[0][0] ;int r  = a[0][1];//第一个区间的左右端点
           //从第二个端点开始遍历
           for(int i = 1 ; i < a.length ; i++){
               if(a[i][0] > r ){
                   res.add(new int[]{l,r});
                   l = a[i][0];
                   r = a[i][1];
               }else r = Math.max(r,a[i][1]);
           }
           //最后一个区间要保存
           res.add(new int[]{l,r});
           return res.toArray(new int[0][0]) ;
    }
}
posted @   依嘫  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示