package leetcode;
import java.util.ArrayList;
import java.util.List;
public class demo_57 {
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[] >list=new ArrayList<int[]>();
int index;
for(index=0;index<intervals.length;index++) {
//如果当前区间的左边界大于要合并的右边界,那么从当前区间开始之后的所有区间都不会被合并
if(newInterval[1]<intervals[index][0]) {break;}
//区间合并
if(intervals[index][1]>=newInterval[0]) {
newInterval[0]=Math.min(intervals[index][0], newInterval[0]);
newInterval[1]=Math.max(intervals[index][1], newInterval[1]);
}
else {
list.add(new int[] {intervals[index][0],intervals[index][1]});
}
}
//把合并后的区间加入
list.add(newInterval);
//把未被合并的原始区间加入进去
for(int i=index;i<intervals.length;i++) {
list.add(new int[] {intervals[i][0],intervals[i][1]});
}
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_57 d57=new demo_57();
int[][] intervals= {{1,2},{3,5},{6,7},{8,10},{12,16}};
int[] newInterval= {4,8};
d57.insert(intervals, newInterval);
}
}