package leetcode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class demo_56 {
public int[][] merge(int[][] intervals) {
List<int[]> list=new ArrayList<int[]>();
//数组进行排序
Arrays.sort(intervals,new Comparator<int[]>() {
public int compare(int[] s1,int[] s2) {
if(s1[0]==s2[0]) {return s1[1]-s2[1];}
return s1[0]-s2[0];
}
});
int left=intervals[0][0];
int right=intervals[0][1];
for(int i=1;i<intervals.length;i++) {
//当前区间能与前一个合并
if(intervals[i][0]<=right) {
right=right>intervals[i][1]?right:intervals[i][1];
}
//否则把前一个数组加入List中,再重新新建一个区间
else {
list.add(new int[] {left,right});
left=intervals[i][0];
right=intervals[i][1];
}
}
//循环中最后一个区间会被丢弃所以加上
list.add(new int[] {left,right});
int index=0;
int[][] array=new int[list.size()][2];
for(int[] a:list) {
array[index][0]=a[0];
array[index][1]=a[1];
index=index+1;
}
for(int i=0;i<array.length;i++) {
for(int j=0;j<2;j++) {
System.out.print(array[i][j]+" ");
}
System.out.println();
}
return array;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_56 d56=new demo_56();
int[][] intervals= {{1,3},{2,6},{8,10},{15,18}};
d56.merge(intervals);
}
}