leetcode56 合併區間(Medium)
阿新 • • 發佈:2020-07-18
題目來源: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; } };