Leetcode Insert Interval

来源:互联网 发布:视频剪辑配乐软件 fcp 编辑:程序博客网 时间:2024/05/18 01:25

题意:给出一系列区间,再给出一个新的区间,求这些区间所组成的新的区间。

思路:顺序遍历,先找出所有不重叠的区间,再处理重叠的区间。

/** * Definition for an interval. * struct Interval { *     int start; *     int end; *     Interval() : start(0), end(0) {} *     Interval(int s, int e) : start(s), end(e) {} * }; */class Solution {public:    vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {        vector<Interval> re;        int left = -1;        int right = intervals.size();        for(int i = 0; i < intervals.size(); ++ i) {            if(intervals[i].end < newInterval.start) {                re.push_back(intervals[i]);                left = i;            }        }                for(int i = intervals.size() - 1; i >= 0; i --) {            if(intervals[i].start > newInterval.end) {                re.push_back(intervals[i]);                right = i;            }        }                Interval tempInterval;        if(left + 1 >= 0 && left + 1 < intervals.size()) tempInterval.start = min(newInterval.start, intervals[left + 1].start);        else tempInterval.start = newInterval.start;        if(right - 1 >= 0 && right - 1 < intervals.size()) tempInterval.end = max(newInterval.end, intervals[right - 1].end);        else tempInterval.end = newInterval.end;                re.push_back(tempInterval);                std::sort(re.begin(), re.end(), [](Interval a, Interval b) {return a.start < b.start;});                return re;    }};


0 0
原创粉丝点击