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]) ;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!