【LeetCode题目记录-4】插入数组间隔问题

来源:互联网 发布:mysql 建表 索引 编辑:程序博客网 时间:2024/06/05 11:42

Insert Interval

 Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).

You may assume that the intervals were initially sorted according to their start times.

Example 1:
Given intervals 
[1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].

Example 2:
Given 
[1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].

This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].

【分析-非原创】

参考:https://oj.leetcode.com/discuss/3971/in-place-solution-ask-for-suggestion

  public static List<Interval> insert(List<Interval> intervals, Interval newInterval) {

    List<Interval> list=new ArrayList<Interval>();

        for(int i=0;i<intervals.size();i++){

        /*只要在newInterval左边的都直接加入到list*/

            if(newInterval.start>intervals.get(i).end){

                list.add(intervals.get(i));

               /*只要在newInterval在的右边,就将newInterval加入list,同时将右边这个当做newInterval*/

            }else if(newInterval.end<intervals.get(i).start){

                list.add(newInterval);

                newInterval=intervals.get(i);

            }else{

              /*获取新的newInterval*/

                newInterval.start=Math.min(newInterval.start,intervals.get(i).start);

                newInterval.end=Math.max(newInterval.end,intervals.get(i).end);

            }

        }

        list.add(newInterval);

        return list;

}

0 0
原创粉丝点击