leetcode: Insert Interval

来源:互联网 发布:java中timestamp 编辑:程序博客网 时间:2024/05/04 16:11

向一组有序的区间中插入一个区间,并合并。。。。试想:区间之间有三种情况:

1. A.end<B.start

2.A.start>B.end

3其他

由于区间集合有序,1,2两种情况区间和插入区间毫无交集,但是在2情况时要将当前待插入区间插入》。。情况三即和待插入区间有重叠...此时我们取两端极值更新待插入区间即可完成区间的合并.....最后需要判断是否出现了情况2,即更新后的待插入区间是否插入....这样遍历一遍区间集合即可完成....


/** * Definition for an interval. * public class Interval { *     int start; *     int end; *     Interval() { start = 0; end = 0; } *     Interval(int s, int e) { start = s; end = e; } * } */public class Solution {    public List<Interval> insert(List<Interval> intervals, Interval newInterval) {        List<Interval> res = new ArrayList<Interval>();        int l = newInterval.start;        int r = newInterval.end;        int flag=0;        for(Interval i : intervals)        {            if(flag==1)            {                res.add(i);                continue;            }            if(l > i.end)            {                res.add(i);                continue;            }            if(r < i.start)            {               Interval tmp = new Interval(l,r);               res.add(tmp);               res.add(i);               flag=1;               continue;            }            l = Math.min(l,i.start);            r = Math.max(r,i.end);        }        if(flag==0)        {            Interval tmp = new Interval(l,r);            res.add(tmp);        }        return res;    }}


0 0
原创粉丝点击