这个题之前我在我都博客里讲过:
这里就不再赘述。
知识点:
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; } };
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)