LeetCode HOT100 - 合并区间

代码跑的挺慢的

排序,第一维升序第二维降序

然后每次维护当前的 r(因为 l 一定是递增的)

如果新区间的 l 小于等于 r ,那么就说明重叠了,于是扩大区间

否则把现在的 (l, r) 区间放入

这样完整的扫一遍后就得到结果

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& a) {
        sort(a.begin(), a.end(), [&](vector<int> i, vector<int> j){
            if (i[0] == j[0]) {
                return i[1] > j[1];
            }
            return i[0] < j[0];
        });
        vector<vector<int>> ans;
        int n = a.size();
        int l = a[0][0], r = a[0][1];
        for (int i = 1; i < n; i++) {
            if (a[i][0] <= r) {
                r = max(r, a[i][1]);
            } else {
                ans.push_back({l, r});
                l = a[i][0];
                r = a[i][1];
            }
        }
        ans.push_back({l, r});
        return ans;
    }
};

看了眼题解,思路好像都是相同的,可能是实现上的问题

posted @ 2026-05-13 23:59  rdcamelot  阅读(8)  评论(0)    收藏  举报