这个题之前我在我都博客里讲过:
这里就不再赘述。
知识点:
1.二维vector可以用a【】【】直接访问,还可用push_back({})来存入
步骤:
1.创建答案数组。
2.先将原数组按左端点排序,然后将定义l,r表示当前维护的区间,也就是第一个区间。
3.从i=1,开始遍历,如果下一个区间的左端点大于当前维护区间的右端点,就把当前的维护区间放于答案数组,然后当前维护的区间更新成下一个区间。
3否则,就将当前维护的区间的右端点更新为当前较长的右端点
4.最后还会剩下一个区间,把他存入到答案区间内。
class Solution {
public:
vector> merge(vector>& a) {
vector>res;
if(a.empty())return a;
sort(a.begin(),a.end());
int l=a[0][0],r=a[0][1];
for(int i=1;ir){
res.push_back({l,r});
l=a[i][0],r=a[i][1];
}
else r=max(a[i][1],r);
}
res.push_back({l,r});
return res;
}
};



