Leetcode 56-合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
//按左边界排序
//start=intervals[i][0],end=intervals[i][1]
//如果intervals[j][0]<=intervals[i][1],end=intervals[j][1],否则break
class Solution {
public int[][] merge(int[][] intervals) {
int start,end;
//int[][] newInter = new int[intervals.length][2];
//int count=0;//记录新数组中区间的个数
ArrayList<int[]> list = new ArrayList<>();
//这样就是左边界升序排序
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(int[] interval1,int[] interval2){
return interval1[0]-interval2[0];
}
});
for(int i=0;i<intervals.length;i++){
start=intervals[i][0];
end=intervals[i][1];
for(int j=i+1;j<intervals.length;j++){
if(intervals[j][0]<=end){
//确认新的右边界
end=Math.max(intervals[j][1],end);
//这一步是为了移动i指针,使得新数组不再包含已被合并的数组
i=j;
}else{
break;
}
}
list.add(new int[]{start,end});
}
return list.toArray(new int[list.size()][]);
}
}