跳转至

*56.合并区间 (Medium)*

题目描述*

标签*

排序;双指针;

思路 & 代码*

先根据区间左界排序,然后双指针合并重叠。

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& inter) {
        int len = inter.size();
        if(len <= 1) {
            return inter;
        }
        sort(inter.begin(), inter.end(), [&](vector<int>& a, vector<int>& b) -> int {
            return a[0] < b[0];
        }); 
        vector<vector<int>> res;
        int l = 0, r = 0;
        while(r < len) {
            if(inter[r][0] > inter[l][1]) {
                res.push_back(inter[l]);
                l = r;
            }else if(inter[r][1] <= inter[l][1]) {
                r++;
            }else {
                inter[l][1] = inter[r][1];
                r++;
            }
        }
        res.push_back(inter[l]);
        return res;
    }
};

最后更新: July 23, 2022