思路
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][]);}