合并区间
以数组 intervals
表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]
。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
public int[][] merge(int[][] intervals) {
if(intervals.length == 1){
return intervals;
}
Arrays.sort(intervals,((o1, o2) -> {
return o1[0] - o2[0];
}));
int start = intervals[0][0];
int end = intervals[0][1];
ArrayList<int[]> list = new ArrayList<int[]>();
for (int i = 1; i < intervals.length; i++) {
if(intervals[i][0]>end){
list.add(new int[]{start,end});
start = intervals[i][0];
end = intervals[i][1];
}else{
end = Math.max(intervals[i][1],end);
}
if(i == intervals.length-1){
list.add(new int[]{start,end});
}
}
int[][] res = new int[list.size()][2];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
贪心,先排序,再合并即可