合并区间,首先用sort函数按区间左边界进行排序(OS:功能好强大啊),默认升序。排序后即可向定义好的数组merge中不断塞入区间:先在排序后塞入intervals[0],如果下一个区间的左边界比merge最后一个区间的右边界大,直接塞入,否则将merge最后一个区间的右边界改为它和当前intervals[i]右边界的maximum。注意intervals为空的corner case。
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> merge;
if(intervals.empty())
return merge;
if(intervals.size()==1){
merge.push_back(intervals[0]);
return merge;
}
sort(intervals.begin(),intervals.end());
merge.push_back(intervals[0]);
for(int i=1;i<intervals.size();i++){
if(merge.back()[1]<intervals[i][0])
merge.push_back(intervals[i]);
else{
merge.back()[1]=max(merge.back()[1],intervals[i][1]);
}
}
return merge;
}
};