leetcode 56. Merge Intervals

来源:互联网 发布:淘宝改图标 系统繁忙 编辑:程序博客网 时间:2024/05/04 20:53

问题

https://leetcode.com/problems/merge-intervals/

解法

首先按照start 排序, 逐个插入,如果与最后一个相交则合并,否则插入新节点。

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