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; }


浙公网安备 33010602011771号