和重叠区间问题类似,我们先按x排序,这样保证每次下一个都是最先到来的。然后用一个栈存之前没问题的元素,如果有问题就排出合并,和252题的思路基本一致。
注:back()是真的好用,爱了。
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(), intervals.end());
vector<vector<int>> ret{intervals[0]};
for(int i=1;i<intervals.size();i++)
{
if(intervals[i][0] <= ret.back()[1])
{
vector<int> tmp{ret.back()[0], max(ret.back()[1], intervals[i][1])};
ret.pop_back();
ret.push_back(tmp);
}
else ret.push_back(intervals[i]);
}
return ret;
}
};