leetcode56 - Merge Intervals - medium

Given a collection of intervals, merge all overlapping intervals.

Example 1:

Input: intervals = [[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: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.

 

Constraints:

  • intervals[i][0] <= intervals[i][1]
依据start time sort好,遍历intervals,如果和上一个(res.back())有overlap的话更新上一个的end time来包含当前这个interval,没有的话push进res,看和后续的能不能merge。   实现:O(nlogn) - sort
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(), 
            [](vector<int>&a, vector<int>&b){return a[0] < b[0];});
        res.push_back(intervals[0]);
        
        for (int i=1; i<intervals.size(); i++){
            if (intervals[i][0] <= res.back()[1]){
                res.back()[1] = max(res.back()[1], intervals[i][1]);
            }else{
                res.push_back(intervals[i]);
            }
        }
        
        return res;
        
    }
};

 

 
上一篇:区间处理-会议室 II(python)


下一篇:笔记--cocos2d-x 3.0 环境搭建