Insert Interval - LeetCode

来源:互联网 发布:小米电视网络机顶盒 编辑:程序博客网 时间:2024/06/04 08:26

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].

这道题的作法就是,如果插入的interval和我们正在访问的interval无关,就把那个interval放到结果集里,如果有关,就对我们手上需要插入的interval进行更新。很多时候我们做一个新的空集放结果,比我们在原集上更改要方便的多(虽然浪费了一定的空间)。

AC代码如下:


public class Solution {    public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) {         ArrayList<Interval> result = new ArrayList<Interval>();         for(Interval interval: intervals){            if(interval.end < newInterval.start){                result.add(interval);            }else if(interval.start > newInterval.end){                result.add(newInterval);                newInterval = interval;                    }else if(interval.end >= newInterval.start || interval.start <= newInterval.end){                newInterval = new Interval(Math.min(interval.start, newInterval.start), Math.max(newInterval.end, interval.end));            }        }         result.add(newInterval); //什么时候都不要忘记处理最后一个         return result;    }}


0 0
原创粉丝点击