区间合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static int[][] merge(int[][] a) {  
if (a == null || a.length == 0 || a[0].length == 0) {
return new int[0][2];
}
Arrays.sort(a, Comparator.comparingInt(item -> item[0]));
List<int[]> res = new ArrayList<>();
for (int[] arr : a) {
int left = arr[0];
int right = arr[1];
if (res.size() == 0 || res.get(res.size() - 1)[1] < left) {
res.add(new int[]{left, right});
} else {
int newRight = Math.max(res.get(res.size() - 1)[1], left);
res.set(res.size() - 1, new int[]{res.get(res.size() - 1)[0], newRight});
}
}
return res.toArray(new int[res.size()][2]);
}