Poison

56. Merge Intervals

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public int[][] merge(int[][] intervals) {
// 只需按 start 排序
Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));

List<int[]> intervalList = new ArrayList<>();
intervalList.add(Arrays.copyOf(intervals[0], 2));
for (int i = 1; i < intervals.length; i++) {
int[] pervInterval = intervalList.get(intervalList.size() - 1);
if (intervals[i][0] <= pervInterval[1]) {
pervInterval[1] = Math.max(pervInterval[1], intervals[i][1]);
} else {
intervalList.add(Arrays.copyOf(intervals[i], 2));
}
}

return intervalList.toArray(new int[0][]);
}
}
Reference

56. Merge Intervals