/**
* 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) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<Interval> ret;
bool inserted = false;
for (int i = 0; i < intervals.size(); i++) {
Interval inv = intervals[i];
if (inv.end < newInterval.start) {
ret.push_back(inv);
} else if (inv.start > newInterval.end) {
if (!inserted) {
ret.push_back(newInterval);
inserted = true;
}
ret.push_back(inv);
} else {
newInterval.start = min(newInterval.start, inv.start);
newInterval.end = max(newInterval.end, inv.end);
}
}
if (!inserted) ret.push_back(newInterval);
return ret;
}
};
Small Case: 4ms
Large Case: 64ms
Time: O(n)
Space: O(n)