# 56 - Merge Intervals

解法一 - Sorting(vector 版本)

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if(intervals.size() < 2) {
            return intervals;
        }

        // Sort the intervals by the start time
        sort(intervals.begin(), intervals.end(), 
             [](const vector<int>& i1, const vector<int>& i2) {
                return i1[0] < i2[0];
        });

        // Keep merging them
        vector<vector<int>> mergedIntervals;
        mergedIntervals.push_back(intervals[0]);
        for(int i = 1; i < intervals.size(); ++i) {
            if( mergedIntervals.back()[1] < intervals[i][0] ) {
                mergedIntervals.push_back(intervals[i]);
            }
            else {
                mergedIntervals.back()[1] = max(mergedIntervals.back()[1], intervals[i][1]);
            }
        }

        return mergedIntervals;
    }
};

Last updated