Merge Intervals

来源:互联网 发布:网络打印app 编辑:程序博客网 时间:2024/05/01 01:57

Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

/** * 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:    static bool comp(const Interval & a, const Interval & b)    {        return a.start < b.start;    }    vector<Interval> merge(vector<Interval>& intervals)    {        vector<Interval> ret;        if(intervals.size() <=1)            return intervals;        sort(intervals.begin(),intervals.end(),comp);                ret.push_back(intervals[0]);        for(int i = 1;i<intervals.size();i++)        {            Interval preIn = ret.back();            Interval curIn = intervals[i];                        //已经根据start排序了,所以curIn.start不可能小余preIn.start            if(curIn.start <= preIn.end && curIn.end >= preIn.end)            {                preIn.end = curIn.end;                ret.pop_back();                ret.push_back(preIn);            }            else if(curIn.start > preIn.end)            {                ret.push_back(curIn);            }        }                return ret;            }};


0 0
原创粉丝点击