[LeetCode] Merge Intervals

来源:互联网 发布:mysql函数与存储过程 编辑:程序博客网 时间:2024/05/16 18:51

Sort the intervals in ascending order of start. Let the tmp denote the first interval, iterate the later intervals to compare:

If start>tmp.start: push tmp into result, replace tmp with the current interval;

Else if end>tmp.end: update tmp.end = end;

/** * 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> result;        Interval tmp;        if(intervals.size()==0) return result;        sort(intervals.begin(),intervals.end(),less);        tmp = intervals[0];        for(int i=1;i<intervals.size();i++) {            if(intervals[i].start>tmp.end) {                result.push_back(tmp);                tmp = intervals[i];            }            else {                if(intervals[i].end<=tmp.end) continue;                else tmp.end = intervals[i].end;            }        }        result.push_back(tmp);        return result;    }    static bool less(const Interval &a, const Interval &b) {        return a.start<b.start;    }};


0 0