56. Merge Intervals

来源:互联网 发布:sybase数据库实例教程 编辑:程序博客网 时间:2024/06/06 03:50

题目

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

解析

题意:将一个Interval新结构进行合并
关键点在于每次比较用的是ret中的尾Interval。

代码

/** * 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:    vector<Interval> merge(vector<Interval>& intervals) {        vector<Interval> ret;        if(!intervals.size()) return ret;        sort(intervals.begin(),intervals.end(),[](Interval a,Interval b){return a.start<b.start;});        ret.push_back(intervals[0]);        for(int i=1;i<intervals.size();i++){            if(ret.back().end<intervals[i].start) ret.push_back(intervals[i]);            else                ret.back().end=max(ret.back().end,intervals[i].end);        }        return ret;    }};
原创粉丝点击