leetcode Merge Intervals

Merge Intervals

合并区间

/**
 * Definition for an interval.
 * struct Interval {
 *     int start;
 *     int end;
 *     Interval() : start(0), end(0) {}
 *     Interval(int s, int e) : start(s), end(e) {}
 * };
 */
 bool comp(const Interval &a, const Interval &b)
{  
    if(a.start==b.start)return a.end<b.end;
    return a.start<b.start;
}
class Solution {
public:
    vector<Interval> merge(vector<Interval> &intervals) 
    {
        sort(intervals.begin(),intervals.end(),comp);
        vector<Interval>v;
        if(intervals.size()==0)return v; 
        int pend=intervals[0].end;
        Interval s(intervals[0].start,pend);
        for(int i=1;i<intervals.size();i++)
        {
            if(intervals[i].start>pend)
            {   
                s.end=pend;
                v.push_back(s);
                s.start=intervals[i].start;
                pend=intervals[i].end;
            }
            else pend=max(intervals[i].end,pend);       
        }
         s.end=pend;
         v.push_back(s);
         return v;
    }
};

 采用自定义的比较函数,必须申明为全局对象,不能是类的局部对象。

原文地址:https://www.cnblogs.com/tgkx1054/p/3087307.html