首页 > 其他 > 详细

LeetCode.56(合并区间)

时间:2020-04-17 01:05:32      阅读:61      评论:0      收藏:0      [点我收藏+]

LeetCode.56(合并区间)

  • 给出一个区间的集合,请合并所有重叠的区间。

    示例1:

    输入: [[1,3],[2,6],[8,10],[15,18]]
    输出: [[1,6],[8,10],[15,18]]
    解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
    

    示例 2:

    输入: [[1,4],[4,5]]
    输出: [[1,5]]
    解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
    
  • 代码:

    //2020_04_17
    class Solution
    {
    public:
        vector<vector<int>> merge(vector<vector<int>> &intervals)
        {
            vector<vector<int>> res;     //返回结果
            int size = intervals.size(); //长度节省时间
            if (size == 0)               //处理长度为0的异常
                return res;                           
            sort(intervals.begin(), intervals.end()); //按照左端排序
            vector<int> temp = intervals[0];          //temp指向原容器中第一个元素
            for (int i = 1; i < size; i++)
            {
                if (temp[1] < intervals[i][0]) //若后左端>=前右端(无交集)
                {
                    res.push_back(temp);       //加入结果容器
                    temp[0] = intervals[i][0]; //同步修改temp
                    temp[1] = intervals[i][1];
                }
                else //若后左端<=前右端(有交集)
                {
                    if (temp[1] < intervals[i][1]) //比较右端大小
                    {
                        temp[1] = intervals[i][1]; //temp右端改为较大者
                    }
                }
            }
            res.push_back(temp); //将最后的temp加入到结果容器
            return res;
        }
    };
    
  • 结果:

    技术分享图片
    技术分享图片

LeetCode.56(合并区间)

原文:https://www.cnblogs.com/iceix/p/12717055.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!