Insert Interval
Description:
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]
.
Code:
vector<Interval> insert(vector<Interval>& intervals, Interval newInterval) { vector<Interval>result; int low = 0, high = intervals.size()-1; while (low <= high) { int mid = (low+high)/2; if (intervals[mid].start<=newInterval.start) low = mid+1; else high = mid-1; } vector<Interval>::iterator itr = intervals.begin(); intervals.insert(itr+low, newInterval);//在迭代器前插入,即在第low+1个元素前插入 result.push_back(intervals[0]); for (int i = 1; i < intervals.size(); ++i) { int temp = result.size(); if (intervals[i].start <= result[temp-1].end) result[temp-1].end = max(intervals[i].end,result[temp-1].end); else result.push_back(intervals[i]); } return result; }