工作生活

LeetCode-56. 合并区间

2019-06-28  本文已影响0人  一只可爱的柠檬树

题目描述 合并区间

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

示例

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

解题思路

代码

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> res;
        if(intervals.size()==0||intervals[0].size()==0) return res;
        if(intervals.size()==1) return intervals;
        sort(intervals.begin(), intervals.end(), [](vector<int> a, vector<int> b){
            return a[0] < b[0];
        });
        int x=intervals[0][0];
        int y=intervals[0][1];
        for(int i=1;i<intervals.size();i++){
            if(intervals[i][0]<=y){
                if(intervals[i][1]>y) y = intervals[i][1];
            }else{
                res.push_back({x, y});
                x = intervals[i][0];
                y = intervals[i][1];
            }
        }
        res.push_back({x, y});
        return res;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读