-
Notifications
You must be signed in to change notification settings - Fork 110
Expand file tree
/
Copy path56-merge-intervals.cpp
More file actions
25 lines (23 loc) · 901 Bytes
/
56-merge-intervals.cpp
File metadata and controls
25 lines (23 loc) · 901 Bytes
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
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if (intervals.size() == 0) return {};
if (intervals.size() == 1) return {intervals[0]};
sort(intervals.begin(), intervals.end(),
[](const vector<int>& v1, const vector<int>& v2) {
return v1[0] < v2[0];
});
vector<vector<int>> result = {intervals[0]};
for (int i = 1; i < intervals.size(); i++) {
vector<int> toCompare = result[result.size() - 1];
if (toCompare[1] >= intervals[i][0]) {
if (toCompare[1] <= intervals[i][1]) {
result[result.size() - 1] = {toCompare[0], intervals[i][1]};
}
} else {
result.push_back(intervals[i]);
}
}
return result;
}
};