57. 插入区间

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);
    }

}

 

posted on 2021-06-04 16:47  一仟零一夜丶  阅读(51)  评论(0)    收藏  举报