-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0057_Insert_Interval.cpp
More file actions
79 lines (67 loc) · 2.26 KB
/
Copy path0057_Insert_Interval.cpp
File metadata and controls
79 lines (67 loc) · 2.26 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
vector<vector<int> > output;
int i, start, end, n = intervals.size(), tmp_start;
start = newInterval[0];
end = newInterval[1];
for(i = 0; i < n; i++){
if(start <= intervals[i][0] || start <= intervals[i][1]){
tmp_start = min(start, intervals[i][0]);
while(i < n && end > intervals[i][1]) i++;
// end > last
if(i >= n){
vector<int> tmp = {tmp_start, end};
output.push_back(tmp);
}
// end < last second && > last first
else if (intervals[i][0] <= end){
vector<int> tmp = {tmp_start, intervals[i][1]};
output.push_back(tmp);
i++;
}
// end < last first
else{
vector<int> tmp = {tmp_start, end};
output.push_back(tmp);
}
break;
}
else output.push_back(intervals[i]);
}
// rest seg
for(; i < n; i++) output.push_back(intervals[i]);
if(n == 0 || intervals.back()[1] < start){
output.push_back(newInterval);
}
return output;
}
};
int main(){
Solution solve;
//vector<vector<int> > input = {{1,3}, {6,9}};
//vector<int> newI = {2,5};
//vector<vector<int> > input = {{1,3}, {5,7},{9,11},{13,15}};
//vector<int> newI = {0,19};
vector<vector<int> > input = {{1,5}};
//vecotr<vecotr<int> > input;
vector<int> newI = {6,8};
cout << "Input: insert:" << newI[0] << " " << newI[1] << endl;
for(int i = 0; i < input.size(); i++){
for(int j = 0; j < input[i].size(); j++)
cout << input[i][j] << " ";
cout << endl;
}
vector<vector<int> > output = solve.insert(input, newI);
cout << "Output: " << endl;
for(int i = 0; i < output.size(); i++){
for(int j = 0; j < output[i].size(); j++)
cout << output[i][j] << " ";
cout << endl;
}
return 0;
}