Merge Intervals
Last updated
Last updated
For every interval
in intervals
If it comes before the newInterval
with no overlap: current.end < newInterval.start
Push current
into the result
vector
If newInterval
comes before the current
interval with no overlap: current.start > newInterval.end
Push newInterval
into the result
vector
current
is the new newInterval
If both conditions are false then definitely there has been an overlap
Merge the current
interval to newInterval
In the end, newInterval
will be left
Push it into the result
vector
vector<Interval> Solution::insert(vector<Interval> &intervals, Interval newInterval) {
vector<Interval> res;
for(Interval test: intervals)
// New Interval comes after Test with no overlap
if(newInterval.start > test.end)
// insert Test
res.push_back(test);
// new interval comes before thest with no overlap
else if(test.start > newInterval.end) {
// insert New Interval
res.push_back(newInterval);
// Put Test into New Interval
newInterval = test;
// any other case of over lap
} else
// merge Test with New Interval
newInterval = Interval(min(test.start, newInterval.start), max(test.end, newInterval.end));
res.push_back(newInterval);
return res;
}
Time Complexity: O(n)โ
Space Complexity: O(n)โ