lintcode30. 插入区间

五迷三道 提交于 2020-02-05 02:42:23

给出一个无重叠的按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)

样例
样例 1:

输入:
(2, 5) into [(1,2), (5,9)]
输出:
[(1,9)]
样例 2:

输入:
(3, 4) into [(1,2), (5,9)]
输出:
[(1,2), (3,4), (5,9)]

/**
 * Definition of Interval:
 * classs Interval {
 *     int start, end;
 *     Interval(int start, int end) {
 *         this->start = start;
 *         this->end = end;
 *     }
 * }
 */

class Solution {
public:
    /**
     * @param intervals: Sorted interval list.
     * @param newInterval: new interval.
     * @return: A new interval list.
     */
    static bool cmp(Interval&a,Interval&b)
    {
        return a.start<b.start;
    }
    vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
        // write your code here
        vector<Interval> res; 
        if(intervals.size()<=0)
        {
            res.push_back(newInterval);
            return res; 
        }
        intervals.push_back(newInterval);
        sort(intervals.begin(),intervals.end(),cmp);
        res.push_back(intervals[0]);
        for (int i = 1; i < intervals.size(); i++) {
            /* code */
            if(intervals[i].start<=res.back().end) 
                res.back().end=intervals[i].end>res.back().end?intervals[i].end:res.back().end;
            else res.push_back(intervals[i]);
        }
        return res;
    }
};
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!