对于要进行合并的所有区间我们需要预处理排序一下
排序后我们遍历的时候判断前一个区间的右区间是否大于等于当前区间的左区间
1.如果大于等于取前一个右区间和当前右区间的最大值
2.如果小于则再放入list中一个新的左右区间
public int[][] merge(int[][] intervals) {
if (intervals.length==1) return intervals;
Arrays.sort(intervals, (a, b) -> a[0]-b[0]);//按照升序排序
List<int[]> list = new ArrayList<>();
list.add(new int[]{intervals[0][0],intervals[0][1]});
int step = 0;
for (int i = 1; i < intervals.length; i++) {
int temp[] = list.get(step);
if (temp[1] >= intervals[i][0]){//前一个区间大于等于当前区间的左区间
temp[1] = Math.max(temp[1], intervals[i][1]);
list.set(step,temp);
}else{//小于
step++;
list.add(intervals[i]);
}
}
return list.toArray(new int[step+1][]);
}