1. 程式人生 > 實用技巧 >leetcode56 合併區間(Medium)

leetcode56 合併區間(Medium)

題目來源:leetcode56 合併區間

題目描述:

給出一個區間的集合,請合併所有重疊的區間。

示例 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] 可被視為重疊區間。

解題思路:

見程式碼

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        vector<vector<int>> merged;
        sort(intervals.begin(),intervals.end());//先按照左端點進行升序排序
        for(int i=0;i<intervals.size();i++){
            int L=intervals[i][0],R=intervals[i][1];
            if(merged.size()==0||merged.back()[1]<L){//如果結果集為空,或者結果集前一個區間左端點小於下一個區間右端點,不合並直接加入
                merged.push_back({L,R});
            }
            else{
                merged.back()[1]=max(merged.back()[1],R);//否則,合併,且右端點是前後區間右端點較大的那個
            }
        }
        return merged;
    }
};