class Solution {
public int[][] merge(int[][] intervals) {
//1.按照区间的起始位置排序
Arrays.sort(intervals,(v1,v2)->v1[0]-v2[0]);
//2.创建一个结果数组
int[][] res = new int[intervals.length][2];
int idx = -1;
for(int[] interval : intervals){
if(idx==-1 || interval[0]>res[idx][1]){
//如果结果数组为空或者当前区间的起止位置>结果数组的截至位置,则不合并,直接将当前数组计入结果数组
res[++idx]=interval;
}
//将当前区间合并到结果数组的最后区间
else{
res[idx][1]=Math.max(interval[1],res[idx][1]);
}
}
return Arrays.copyOf(res,idx+1);
}
}