以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

答案:
class Solution {
public int[][] merge(int[][] intervals) {
if(intervals.length <= 1 || intervals == null) {
return intervals;
}
List<int[]> res = new ArrayList<>();
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
int i = 0;
int n = intervals.length - 1;
while(i <= n) {
int left = intervals[i][0];
int right = intervals[i][1];
//注意i的取值范围
while(i < n && right >= intervals[i + 1][0]) {
right = Math.max(right, intervals[i + 1][1]);
i++;
}
res.add(new int[]{left, right});
i++;
}
//list.toArray(维度)
return res.toArray(new int[res.size()][2]);
}
}

被折叠的 条评论
为什么被折叠?



