Skip to content

Commit 64fe065

Browse files
committed
3
1 parent a950a6f commit 64fe065

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

InsertInterval/InsertInterval.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* Definition for an interval.
3+
* struct Interval {
4+
* int start;
5+
* int end;
6+
* Interval() : start(0), end(0) {}
7+
* Interval(int s, int e) : start(s), end(e) {}
8+
* };
9+
*/
10+
class Solution {
11+
public:
12+
vector<Interval> insert(vector<Interval> &intervals, Interval newInterval) {
13+
// Start typing your C/C++ solution below
14+
// DO NOT write int main() function
15+
16+
vector<Interval> merged_interval;
17+
18+
bool has_inserted = false;
19+
int new_start = newInterval.start;
20+
int new_end = newInterval.end;
21+
22+
for (int i = 0; i < intervals.size(); i++) {
23+
if (intervals[i].start <= new_end && new_start <= intervals[i].end) {
24+
new_start = min(new_start, intervals[i].start);
25+
new_end = max(new_end, intervals[i].end);
26+
}
27+
else {
28+
if (!has_inserted && new_end < intervals[i].start) {
29+
has_inserted = true;
30+
merged_interval.push_back(Interval(new_start, new_end));
31+
}
32+
merged_interval.push_back(intervals[i]);
33+
}
34+
}
35+
if (!has_inserted)
36+
merged_interval.push_back(Interval(new_start, new_end));
37+
return merged_interval;
38+
}
39+
};

0 commit comments

Comments
 (0)