class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
int n = (int)intervals.size();
vector<vector<int>> ans;
sort(intervals.begin(), intervals.end());
//设置左右边界
int left = intervals[0][0], right = intervals[0][1];
for (int i = 0; i < n; ++i){
//第一种情况:当前左边界 >= 前一个的右边界
if (intervals[i][0] > right){
ans.push_back({left, right});
left = intervals[i][0];
right = intervals[i][1];
//第2种情况:夹在中间,直接跳过; 第3种情况,有公共区间
}else {
right = max(intervals[i][1], right);
left = min(intervals[i][0], left);
}
}
ans.push_back({left, right});
return ans;
}
};