如有错误请指出!谢谢
https://dailycode.youkuaiyun.com/practice/2190923
class Solution {
public int[][] merge(int[][] intervals) {
List<int[]> res = new ArrayList<>();
if (intervals == null) {
return res.toArray(new int[0][]);
}
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);//将二维数组按照第一维元素进行升序排序
int i = 0;
int left = 0;//左区间
int right = 0;//右区间
while (i < intervals.length) {
left = intervals[i][0];
right = intervals[i][1];
while (i < intervals.length - 1 && right >= intervals[i + 1][0]) {//用当前区间的结尾的值与相邻下一个区间的起始的值比较,当其大于等于下一区间起始的值时,合并区间;最后一个区间没有下一区间所以i<区间总数-1
i++;
right = Math.max(right, intervals[i][1]);//比较两区间结尾的值,去大者为合并区间结尾的值
}
res.add(new int[] { left, right });//将区间加入ArrayList
i++;
}
return res.toArray(new int[0][]);//将ArrayList转变为数组
}
}
Arrays.sort() 数组排序,可通过下方链接快速了解此方法
https://www.cnblogs.com/SupremeBoy/p/12717532.html
toArray()转变格式,可通过下方链接快速了解此方法
https://blog.youkuaiyun.com/weixin_42029901/article/details/103363697