56_MergeIntervals - a920604a/leetcode GitHub Wiki


title: 56. Merge Intervals tags:
- Interval categories: leetcode comments: false

solution

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        // ε…ˆζŽ’εΊοΌŒε†θ§€ε―Ÿθ¦εΎ‹
        // ζŒ‰ε€ι–“ηš„start ε‡εΊζŽ’εΊ 
        sort(intervals.begin(), intervals.end(), [](vector<int>& a, vector<int>&b){
            return a[0]<b[0];
        });
        vector<vector<int>> ret;
        int n = intervals.size(), start =intervals[0][0], end= intervals[0][1];
        ret.push_back({start, end});
        for(int i=1;i<n;++i){
            vector<int>&  cur = intervals[i];
            // ζ‰Ύεˆ°ζœ‰ε€ι–“ζœ‰ι‡η–ŠοΌŒδΈ¦ζ›΄ζ–°ζœ€ε€§ηš„end
            if(ret.back()[1] >= cur[0]){
                ret.back()[1] =max( cur[1], ret.back()[1]);
            }
            // 處理下一個區間
            else{
                ret.push_back(cur);
            }
        }
        return ret;
        
    }
};

analysis

  • time complexity O(nlogn)
  • space complexity O(1)
⚠️ **GitHub.com Fallback** ⚠️