#include<bits/stdc++.h>
using namespace std;
typedef long long int64;
class Solution {
public:
static vector<vector<int>> merge(vector<vector<int>>& intervals) {
/*
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
*/
ranges::sort(intervals);
vector<vector<int>> merged; // 已合并的区间
for (auto &it: intervals) {
if (merged.empty()) { // 第一个区间直接添加
merged.push_back( it);
continue;
}
auto &last = merged.back();
if (it.front() <= last.back()) {
// 合并的情况
last.back() = max(last.back(), it.back());
} else {
// 合并不了,添加
merged.push_back(it);
}
}
return merged;
}
};
/*
int main() {
Solution s;
vector<vector<int>> intervals = {{1,3},{1,2},{2,6},{8,10},{15,18}};
// auto &it = intervals.back();
// it.back() = 1;
vector<vector<int>> res = s.merge(intervals);
for (auto& v : res) {
cout << v[0] << " " << v[1] << endl;
}
return 0;
}*/