题目
Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
我的想法
先对数组排序,再合并。自定义排序方法的写法要熟记!
class Solution {
public int[][] merge(int[][] intervals) {
if (intervals == null || intervals.length == 0) {
return new int[0][];
}
Arrays.sort(intervals, (o1,o2)->(o1[0] - o2[0]));
ArrayList<int[]> res = new ArrayList<>();
int[] last = intervals[0];
res.add(last);
for(int[] pair : intervals) {
if(last[1] >= pair[0]) {
last[1] = Math.max(pair[1], last[1]);
} else {
last = pair;
res.add(last);
}
}
return res.toArray(new int[res.size()][]);
}
}