Merge Intervals

来源:互联网 发布:黄岩哪里招深孔钻编程 编辑:程序博客网 时间:2024/06/05 20:38

Merge Intervals

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 cmp(Interval a,Interval b)    {        if (a.start<b.start) return true;        if (a.start==b.start) return a.end<b.end;        return false;    }        vector<Interval> merge(vector<Interval>& intervals) {                if (intervals.empty()) return {};        sort(intervals.begin(),intervals.end(),cmp);        Interval temp;        vector<Interval>ans;        int curstart=intervals[0].start;        int curend=intervals[0].end;        for (int i=1; i<intervals.size(); i++)        {            if (intervals[i].start>curend)            {                temp.start=curstart;                temp.end=curend;                ans.push_back(temp);                                curstart=intervals[i].start;                curend=intervals[i].end;            }            else            {                curend=max(curend,intervals[i].end);            }        }                 temp.start=curstart;         temp.end=curend;         ans.push_back(temp);        return ans;            }};



原创粉丝点击