File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Time: O(n)
2
+ // Space: O(1)
3
+
4
+ /* *
5
+ * Definition for an interval.
6
+ * struct Interval {
7
+ * int start;
8
+ * int end;
9
+ * Interval() : start(0), end(0) {}
10
+ * Interval(int s, int e) : start(s), end(e) {}
11
+ * };
12
+ */
13
+ class Solution {
14
+ public:
15
+ vector<Interval> insert (vector<Interval>& intervals, Interval newInterval) {
16
+ size_t i = 0 ;
17
+ vector<Interval> result;
18
+ // Insert intervals appeared before newInterval.
19
+ while (i < intervals.size () && newInterval.start > intervals[i].end ) {
20
+ result.emplace_back (intervals[i++]);
21
+ }
22
+
23
+ // Merge intervals that overlap with newInterval.
24
+ while (i < intervals.size () && newInterval.end >= intervals[i].start ) {
25
+ newInterval = {min (newInterval.start , intervals[i].start ),
26
+ max (newInterval.end , intervals[i].end )};
27
+ ++i;
28
+ }
29
+ result.emplace_back (newInterval);
30
+
31
+ // Insert intervals appearing after newInterval.
32
+ result.insert (result.end (), intervals.cbegin () + i, intervals.cend ());
33
+ return result;
34
+ }
35
+ };
You can’t perform that action at this time.
0 commit comments