โ Merge Intervals
Logic
For every
interval
inintervals
If it comes before the
newInterval
with no overlap:current.end < newInterval.start
Push
current
into theresult
vector
If
newInterval
comes before thecurrent
interval with no overlap:current.start > newInterval.end
Push
newInterval
into theresult
vectorcurrent
is the newnewInterval
If both conditions are false then definitely there has been an overlap
Merge the
current
interval tonewInterval
In the end,
newInterval
will be leftPush it into the
result
vector
Code
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;
}
Last updated