Skip to content

Commit a9be44d

Browse files
authored
Update 0057-insert-interval.cpp
I think my code resembles the video solution you have provided. Please have a look. Also it is analogous to the python solution.
1 parent f536d27 commit a9be44d

File tree

1 file changed

+22
-21
lines changed

1 file changed

+22
-21
lines changed

cpp/0057-insert-interval.cpp

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,29 @@
1111
class Solution {
1212
public:
1313
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
14-
int i = 0;
14+
vector<vector<int>> ans;
15+
int newStart = newInterval[0];
16+
int newEnd = newInterval[1];
1517
int n = intervals.size();
16-
17-
vector<vector<int>> result;
18-
19-
while (i < n && intervals[i][1] < newInterval[0]) {
20-
result.push_back(intervals[i]);
21-
i++;
18+
for (int i = 0; i < n; i++) {
19+
// Case 1: Non overlapping interval
20+
// If new interval is before the current interval
21+
if (intervals[i][0] > newEnd) {
22+
ans.push_back(newInterval);
23+
copy(intervals.begin() + i, intervals.end(), back_inserter(ans));
24+
return ans;
25+
}
26+
// If new interval is after the current interval
27+
else if (intervals[i][1] < newStart) {
28+
ans.push_back(intervals[i]);
29+
}
30+
// Case 2: Overlapping interval
31+
else {
32+
newInterval[0] = min(newInterval[0], intervals[i][0]);
33+
newInterval[1] = max(newInterval[1], intervals[i][1]);
34+
}
2235
}
23-
24-
while (i < n && intervals[i][0] <= newInterval[1]) {
25-
newInterval[0] = min(newInterval[0], intervals[i][0]);
26-
newInterval[1] = max(newInterval[1], intervals[i][1]);
27-
i++;
28-
}
29-
result.push_back(newInterval);
30-
31-
while (i < n) {
32-
result.push_back(intervals[i]);
33-
i++;
34-
}
35-
36-
return result;
36+
ans.push_back(newInterval);
37+
return ans;
3738
}
3839
};

0 commit comments

Comments
 (0)