思维要灵活呀。我们可以吧解决步骤分为两步:
如果当前遍历区间重叠,就把新区间和当前区间融合赋给新区间删除vector中重叠的区间,加入新区间 /** * Definition of Interval: * class Interval { * public: * 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. */ vector<Interval> insert(vector<Interval> intervals, Interval newInterval) { // write your code here int count = 0; int i = 0; while(i < intervals.size()){ if(newInterval.end < intervals[i].start) break; else if(newInterval.start > intervals[i].end){ ++i; continue; } else{ newInterval.start = min(intervals[i].start,newInterval.start); newInterval.end = max(intervals[i].end,newInterval.end); ++i; ++count; } } if(count > 0) intervals.erase(intervals.begin()+i-count,intervals.begin()+i); intervals.insert(intervals.begin()+i-count,newInterval); return intervals; } };