diff --git a/57.Insert Interval.cpp b/57.Insert Interval.cpp new file mode 100644 index 0000000..f048f2a --- /dev/null +++ b/57.Insert Interval.cpp @@ -0,0 +1,28 @@ +class Solution { +public: + vector> insert(vector>& intervals, vector& newInterval) { + vector> res; + int i = 0; + + // Left part (no intersection with newInterval) + while (i < intervals.size() && intervals[i][1] < newInterval[0]) { + res.push_back(intervals[i]); + ++i; + } + + // newInterval part (with or without merge) + while (i < intervals.size() && intervals[i][0] <= newInterval[1]) { + newInterval[0] = min(newInterval[0], intervals[i][0]); + newInterval[1] = max(newInterval[1], intervals[i][1]); + ++i; + } + res.push_back(newInterval); + + // Right part (no intersection with newInterval) + while (i < intervals.size() && intervals[i][0] > newInterval[1]) { + res.push_back(intervals[i]); + ++i; + } + return res; + } +}; \ No newline at end of file