-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path057_Insert_Interval.cpp
29 lines (29 loc) · 1.06 KB
/
057_Insert_Interval.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int idx = 0;
while (idx < intervals.size()) {
if (newInterval[1] < intervals[idx][0]) {
intervals.insert(intervals.begin() + idx, newInterval);
return intervals;
}
if (newInterval[0] <= intervals[idx][1]) {
break;
}
idx += 1;
}
if (idx == intervals.size()) {
intervals.emplace_back(newInterval);
return intervals;
}
intervals[idx][0] = min(intervals[idx][0], newInterval[0]);
intervals[idx][1] = max(intervals[idx][1], newInterval[1]);
int endidx = idx;
while (endidx < intervals.size() and intervals[idx][1] >= intervals[endidx][0]) {
intervals[idx][1] = max(intervals[idx][1], intervals[endidx][1]);
endidx += 1;
}
intervals.erase(intervals.begin() + idx + 1, intervals.begin() + endidx);
return intervals;
}
};