思路
code
public int[][] merge(int[][] intervals) {
List<int[]> res = new ArrayList<>();
if(intervals==null||intervals.length==0)
return res.toArray(new int[0][]);
//使用lambda表达式按照第一个元素进行排序
Arrays.sort(intervals,(a,b)->a[0]-b[0]);
int i=0;
int n=intervals.length;
//遍历所有的区间
while(i<n){
int left = intervals[i][0];
int right = intervals[i][1];
//如果a[1]>=b[0],说明两个区间有重叠
while(i<n-1&&intervals[i+1][0]<=right){
i++;
//右边界为max(a[1],b[1])
right = Math.max(right,intervals[i][1]);
}
//添加到结果中
res.add(new int[]{left,right});
i++;
}
return res.toArray(new int[0][]);
}