Leetcode219: Merge Intervals

来源:互联网 发布:商城虚拟商品数据库 编辑:程序博客网 时间:2024/05/21 08:35

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) {} * }; */bool comp(const Interval&a, const Interval& b){    if(a.start == b.start)  return a.end<b.end;    else    return a.start<b.start;}class Solution {public:    vector<Interval> merge(vector<Interval>& intervals) {        sort(intervals.begin(), intervals.end(), comp);        vector<Interval> res;        if(intervals.size()==0) return res;        int temp = intervals[0].end;        Interval s(intervals[0].start, temp);        for(int i = 1; i < intervals.size(); i++)        {            if(intervals[i].start > temp)   //相邻之间无重叠            {                s.end = temp;                res.push_back(s);                s.start = intervals[i].start;                temp = intervals[i].end;            }            else                            //有重叠,更新temp                temp = max(temp, intervals[i].end);        }        s.end = temp;        res.push_back(s);        return res;            }};



0 0
原创粉丝点击