leetcode 56 合并区间

[1,3],[4,7],[6,12]



/**
 * Definition for an interval.
 * struct Interval {
 *     int start;
 *     int end;
 *     Interval() : start(0), end(0) {}
 *     Interval(int s, int e) : start(s), end(e) {}
 * };
 */
class Solution {
public:
    vector merge(vector& intervals) {
        vector ans; 
        if (intervals.empty()) return ans; 
    
       sort(intervals.begin(), intervals.end(), cmp);
       for  (const auto item : intervals){
           if (ans.empty()  ){
               ans.push_back(item);
           }
           if (item.start <= ans.back().end &&item.end >= ans.back().end){//如果两者有交叉,但是item没有被完全包含
               ans.back().end = item.end;
           }
            else if (item.start <= ans.back().end &&item.end <= ans.back().end){//如果两者有交叉,但是item被完全包含,就直接跳过就行了
                continue;
            }            
           else
                ans.push_back(item);
       } 
       return ans;
    }
private:
    static bool cmp(Interval a, Interval b){
       return a.start < b.start; 
    }
};

你可能感兴趣的:(leetcode 56 合并区间)