leetcode 057 —— Insert Interval

来源:互联网 发布:淘宝企业店铺税收问题 编辑:程序博客网 时间:2024/05/24 04:17

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


思路:先将要插入的间隔摆放到合适的位置,因为已经排好序了。


class Solution {public:vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) {vector<Interval>::iterator i = intervals.begin();vector<Interval> res;if (intervals.empty()){res.push_back(newInterval);return res;}while ((*i).start < newInterval.start&&i!=intervals.end()) i++;  //把新的间隔放到合适的位置intervals.insert(i, newInterval);i = intervals.begin();vector<Interval>::iterator j = i+1;for (j; j != intervals.end(); j++){if ((*i).end < (*j).start){res.push_back(*i);i = j;continue;}if ((*i).end>=(*j).start){(*i).end = max((*i).end, (*j).end);continue;}}res.push_back(*i);return res;}};


0 0
原创粉丝点击