题目链接:点击这里
题意:给出一个区间的集合,请合并所有重叠的区间。
思路:
AC代码:
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> res;
if(intervals.empty()) return res;
// 优先以左端点排序,再以右端点排序
sort(intervals.begin(), intervals.end());
// 维护一个区间[st,ed]
int st = intervals[0][0], ed = intervals[0][1];
for(int i = 1; i < intervals.size(); i++)
{
if(intervals[i][0] > ed)
{
res.push_back({st, ed});
st = intervals[i][0], ed = intervals[i][1];
}
else
{
ed = max(ed, intervals[i][1]);
}
}
res.push_back({st, ed}); // 把最后一个区间加进去
return res;
}
};