区间合并

区间合并,第1张

区间合并

 

这个题之前我在我都博客里讲过:

这里就不再赘述。

知识点:

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;
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5718411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存