Merge Intervals

来源:互联网 发布:网络大电影立项新规定 编辑:程序博客网 时间:2024/05/16 10:38

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].

参考:http://www.geeksforgeeks.org/merging-intervals/

先按照每个interval的start进行sort,然后扫描一遍进行merge。

bool comp(const Interval &left, const Interval &right){    if(left.start != right.start)        return left.start < right.start;    else        return left.end < right.end;}class Solution {public:    vector<Interval> merge(vector<Interval> &intervals)     {        vector<Interval> result;        if(intervals.size() == 0) return result;        std::sort(intervals.begin(), intervals.end(), comp);                auto it=intervals.begin();        result.push_back(*it);        it++;                for(; it != intervals.end(); it++)        {            int end = result.back().end;            if(end >= it->start)                result.back().end = max(end, it->end);            else                result.push_back(*it);        }        return result;    }};


0 0
原创粉丝点击