LC56 合并区间

搞一个结果数组ans,用来存结果,先排序sort,对原数组扫一遍for,如果原数组中当前元素的左区间值intervals[i][0]要比结果数组中的最后一位的右区间ans.back()[1]大的话,就将该元素插入进结果数组,此时这种情况是不存在交集。
如果不满足上面的条件,存在交集,进行更新结果数组中最后一位的右区间就可以了。

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if (!intervals.size()) return {};
        sort(intervals.begin(), intervals.end());
        vector<vector<int>> ans;
        for (int i = 0; i < intervals.size(); i++) {
            int l = intervals[i][0], r = intervals[i][1];
            if (!ans.size() || l > ans.back()[1]) ans.push_back(intervals[i]);
            else ans.back()[1] = max(r, ans.back()[1]);
        }
        return ans;
    }
};
posted @ 2020-05-07 23:03  Lee先森的博客  阅读(198)  评论(0编辑  收藏  举报