1. 题目描述
以数组
i
n
t
e
r
v
a
l
s
intervals
intervals 表示若干个区间的集合,其中单个区间为
i
n
t
e
r
v
a
l
s
[
i
]
=
[
s
t
a
r
t
i
,
e
n
d
i
]
intervals[i] = [start_i, end_i]
intervals[i]=[starti,endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
示例 1:
示例 2:
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
2. 思路
3. 代码
-
代码1:
public static int[][] merge(int[][] intervals) {
if (intervals.length == 0 ||intervals ==null){
return new int[0][0];
}
ArrayList<int[]> result = new ArrayList<>();
Arrays.sort(intervals, Comparator.comparing(a->a[0]));
int[] currentVal = intervals[0];
for (int i = 1; i < intervals.length; i++) {
int[] nextVal = intervals[i];
if (currentVal[1] >= nextVal[0]){
currentVal[1] = Math.max(currentVal[1], nextVal[1]);
}else {
result.add(currentVal);
currentVal = nextVal;
}
}
result.add(currentVal);
return result.toArray(new int[result.size()][]);
}
以上为个人学习分享,如有问题,欢迎指出:)