merge intervals

来源:互联网 发布:centos重启vnc服务 编辑:程序博客网 时间:2024/05/29 08:41

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


比较tricky的就是先排序,然后比较头尾是不是需要merge,如需要比较尾部是不是需要,否则就不merge, push


/** * 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 comp(Interval& l, Interval&r){        return l.start<r.start;    }    vector<Interval> merge(vector<Interval> &intervals) {        sort(intervals.begin(),intervals.end(),comp);        vector<Interval> res;        if (intervals.size()==0)            return res;        res.push_back(intervals[0]);        int end=0;        for (int i=1; i<intervals.size();i++){            if (intervals[i].start<=res[end].end){                if (intervals[i].end>=res[end].end)                    res[end].end=intervals[i].end;            } else{                res.push_back(intervals[i]);                end++;            }        }        return res;    }};


0 0
原创粉丝点击