以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
import java.util.*;
class Solution {
public int[][] merge(int[][] intervals) {
if (intervals == null) {
return intervals;
}
// 对 intervals 的第一个值进行排序
Arrays.sort(intervals, Comparator.comparingInt(ints -> ints[0]));
ArrayList<int[]> temp = new ArrayList<>();
int[] item = intervals[0];
for (int i = 1; i < intervals.length; i++) {
if (item[1] >= intervals[i][0]) {
item[1] = Math.max(item[1], intervals[i][1]);
} else {
temp.add(item);
item = intervals[i];
}
}
temp.add(item);
return temp.toArray(new int[temp.size()][2]);
}
}
网友评论