QQ截图20210921150911.png
public int[][] merge(int[][] intervals) {
if(intervals.length == 1 ){
return intervals;
}
List<int[]> res = new LinkedList<>();
//自定义数组排列规则
Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));
//此时数组已经升序排列
int temp = intervals[0][0];
for(int i = 1; i < intervals.length; i++){
if(intervals[i][0] > intervals[i-1][1]){
//此时不存在合并数组区间的可能,将结果加入链表中
res.add(new int[]{temp,intervals[i -1][1]});
//temp指向下一个起点
temp = intervals[i][0];
}else{
//直接在数组中进行取最大值操作
intervals[i][1] = Math.max(intervals[i][1],intervals[i-1][1]);
}
}
//最后一定会缺一组
res.add(new int[]{temp,intervals[intervals.length -1 ][1]});
return res.toArray(new int[res.size()][]);
}