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 80 81 82 83 84 85
| #include <iostream> #include <vector> #include <algorithm> using namespace std;
class Solution_0 { public: vector<vector<int>> merge(vector<vector<int>>& intervals) { if (intervals.empty()) { return {}; }
sort(intervals.begin(), intervals.end(), [](const vector<int>& x, const vector<int>& y) { if (x[0] != y[0]) { return x[0] < y[0]; } return x[1] < y[1]; });
vector<vector<int>> res; int l = intervals[0][0], r = intervals[0][1]; for (int i = 1; i < intervals.size(); i++) { if (r < intervals[i][0]) { res.push_back({l, r}); l = intervals[i][0], r = intervals[i][1]; } else { r = max(r, intervals[i][1]); } } res.push_back({l, r});
return res; } };
void printArray(const vector<vector<int>>& nums) { cout << "["; for (size_t i = 0; i < nums.size(); i++) { cout << "["; for (size_t j = 0; j < nums[i].size(); j++) { cout << nums[i][j]; if (j != nums[i].size() - 1) cout << ","; } cout << "]"; if (i != nums.size() - 1) cout << ","; } cout << "]"; }
int main() { Solution solution; vector<vector<vector<int>>> intervals_case = { {{1,3}, {2,6}, {8,10}, {15,18}}, {{1,4}, {4,5}} }; for (auto& intervals : intervals_case) { cout << "Input: "; printArray(intervals); cout << endl;
vector<vector<int>> result = solution.merge(intervals); cout << "Output: "; printArray(result); cout << endl; }
return 0; }
|