一.题目描述
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
https://leetcode-cn.com/problems/merge-intervals/
二.代码
public int[][] merge(int[][] intervals) {
Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
int idx = 0;
for (int i = 1; i < intervals.length; i++) {
int[] interval = intervals[i];
if (interval[0] > intervals[idx][1]) {
intervals[++idx] = interval;
} else {
intervals[idx][1] = Math.max(intervals[idx][1], interval[1]);
}
}
return Arrays.copyOf(intervals, idx + 1);
}