Leetcode典型题解答和分析、归纳和汇总——T56(合并区间)

题目描述:

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

题目解析:

本题考察简单的数据排序知识点。

class Solution{
    public:
    vector<vector<int>> merge(vector<vector<int>>& intervals){
        vector<vector<int>> res;  //作为返回结果
        if(intervals.empty())  return res;

        sort(intervals.begin(),intervals.end());  //按照区间的左边界来进行排序
        int index=0;
        res.push_back(intervals[0]);  //先将第一个区间放入缓存结果中
        for(int i=1;i<intervals.size();i++)//遍历所有的区间
        {
            if(res[index][1]>=intervals[i][0]) //表示res[1]中的右区间比待求解的左区间大
            {
                if(res[index][1]<intervals[i][1])
                  res[index][1] = intervals[i][1];  //这个表明需要扩展右区间
            }
            else 
            {
                index++;
                res.push_back(intervals[i]);  //表示该区间是一个独立的无重叠的
            }
        }
        return res;
    }
};
发布了56 篇原创文章 · 获赞 7 · 访问量 4464

猜你喜欢

转载自blog.csdn.net/weixin_44504987/article/details/104412864