给出一个区间的集合,请合并所有重叠的区间。
示例 1:
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
class Solution {
public int[][] merge(int[][] intervals) {
int n = intervals.length;
if(n==0)
return intervals;
Arrays.sort(intervals, new Comparator<int[]>() {//这里要先进行排序
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0]==o2[0]) return o1[1]-o2[1];
return o1[0]-o2[0];
}
});
int [][]res = new int[n][2];
int min = intervals[0][0];
int max = intervals[0][1];
int m = 0;
for(int i=1;i<n;i++){
if(max >= intervals[i][0])
{
max = Math.max(max,intervals[i][1]);
}
else{
res[m][0] = min;
res[m][1] = max;
min = intervals[i][0];
max = intervals[i][1];
m++;
}
}
res[m][0] = min;
res[m][1] = max;
return Arrays.copyOf(res,m+1);
}
}