LeetCode OJ - Insert Interval

来源:互联网 发布:mysql数据库引擎 编辑:程序博客网 时间:2024/06/05 18:48

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

分析:经典的迭代,newInterval(A)与intervals(B[i])中的元素逐个比较,

1.若A < B[i],即A范围所有数小于B范围,那么直接插入A、插入B[i]以及后续元素

2.若A > B[i],插入B[i]进入下一次迭代

3.若A与B[i]有交集, 根据并集修改A  :A.start = min( A.start, B[i].start);   A.end = max(A.end, B[i].end);

class Solution {public:    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {        int size = intervals.size();        vector<Interval> ret;                for(int i=0; i<size; i++) {            if( newInterval.end < intervals[i].start) {                ret.push_back( newInterval);                ret.insert(ret.end(), intervals.begin()+i, intervals.end() );                return ret;            } else if(intervals[i].end < newInterval.start) {                ret.push_back( intervals[i]);            } else {                newInterval.start = min(newInterval.start, intervals[i].start);                newInterval.end = max(newInterval.end, intervals[i].end);            }        }        ret.push_back(newInterval);         return ret;    }};









0 0
原创粉丝点击