zoukankan      html  css  js  c++  java
  • 56: Merge Intervals

    Problem:

    Given a collection of intervals, merge all overlapping intervals.

    Example 1:

    Input: [[1,3],[2,6],[8,10],[15,18]]
    Output: [[1,6],[8,10],[15,18]]
    Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
    

    Example 2:

    Input: [[1,4],[4,5]]
    Output: [[1,5]]
    Explanation: Intervals [1,4] and [4,5] are considered overlapping.
    

    思路
    将区间的左端点按从小到大进行排序,然后观察相邻2个区间是否有公共部分,如果有公共部分则选取右端点的最大值作为新的区间的右端点,如果无公共部分则直接添加新区间。

    Solution:

    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if (intervals.empty()) return vector<vector<int>>{};
            
        vector<vector<int>> res;
        sort(intervals.begin(), intervals.end(), [] (vector<int> a, vector<int> b) {return a.front() < b.front();});
        res.push_back(intervals[0]);
        for (int i = 1; i < intervals.size(); i++) {
            if (res.back().back() < intervals[i].front()) res.push_back(intervals[i]);
            else
                res.back().back() = max (res.back().back(), intervals[i].back());
        }
        return res;
    }
    

    性能
    Runtime: 80 ms  Memory Usage: 26.5 MB

    相关链接如下:

    知乎:littledy

    欢迎关注个人微信公众号:小邓杂谈,扫描下方二维码即可

    作者:littledy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    sshpass做秘钥分发,ansible做自动化运维工具
    Day7 面向对象和类的介绍
    R-aggregate()
    R-seq()
    R-ts()
    R-ets()
    python-无联网情况下安装skt-learn
    python-线性回归预测
    python-matplotlib-ERROR
    python-pyhs2
  • 原文地址:https://www.cnblogs.com/dysjtu1995/p/12243710.html
Copyright © 2011-2022 走看看