题目
56. 合并区间

题解

代码
import java.util.*;
public class code56 {
public static int[][] merge(int[][] intervals) {
List<int[]> res = new ArrayList<>();
if (intervals.length == 0 || intervals == null) {
int temp1[][] = new int[0][0];
return res.toArray(temp1);
}
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int o1[], int o2[]) {
return o1[0] - o2[0];
}
});
int i = 0;
while (i < intervals.length) {
int left = intervals[i][0];
int right = intervals[i][1];
while (i < intervals.length - 1 && intervals[i + 1][0] <= right) {
i++;
right = Math.max(right, intervals[i][1]);
}
int x[] = { left, right };
res.add(x);
i++;
}
int temp2[][] = new int[res.size()][2];
return res.toArray(temp2);
}
public static void main(String[] args) {
int intervals[][] = { { 1, 3 }, { 2, 6 }, { 8, 10 }, { 15, 18 } };
int res[][] = merge(intervals);
for (int i = 0; i < res.length; i++) {
for (int j = 0; j < res[0].length; j++) {
System.out.print(res[i][j] + " ");
}
System.out.println();
}
}
}
参考
- 排序——题解一
- 合并区间——题解二
- java 自定义排序【Comparator升序降序的记法】
- java初始化二维数组的三种方式
- Java不指定长度的二维数组
- Java 8 Lambda 表达式详解
- 深入浅出 Java 8 Lambda 表达式
- Java Lambda表达式入门
- Java 8 Lambda 表达式
- Leetcode题解助手
- 如何对二维数组进行排序