码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Insert Interval

时间:2014-11-25 23:40:58      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   

问题描述:

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


基本思路:

考虑三种情况:

  1. newInterval.start > intervals[i].end    将intervals[i]加入结果
  2.  newInterval.end < intervals[i].start    将newInterval加入结果
  3. overlap  将融合的几何加入结果


代码:

//my code is ugly. so i copy a wonderfu for you. 

vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {  //C++
    vector<Interval> ret;
    int i = 0;
    for (i = 0; i < intervals.size(); i++)
    {        
        // If newInterval is BEHIND the current interval
        if (newInterval.start > intervals[i].end) 
            ret.push_back(intervals[i]); // then the current interval goes to the result
        // If new Interval is BEFORE the current interval
        else if (newInterval.end < intervals[i].start) 
        {
            ret.push_back(newInterval); // then new interval goes to the result
            newInterval = intervals[i]; // and save the current interval for later
        }
        else // If newInterval OVERLAPS WITH the current interval
        {
            // Then simply merge the two intervals.
            newInterval.start = min(newInterval.start, intervals[i].start);
            newInterval.end = max(newInterval.end, intervals[i].end);
        }
    }
    // In the end, there will be one interval that is still not stored in the result; and this interval, regardless where it comes from the vector or the newInterval, must be stored in newInterval at this point.
    ret.push_back(newInterval);
    return ret;
}


[leetcode]Insert Interval

标签:leetcode   算法   

原文地址:http://blog.csdn.net/chenlei0630/article/details/41489937

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!