[leetcode] Merge Intervals

来源:互联网 发布:天下3女号捏脸数据 编辑:程序博客网 时间:2024/06/05 07: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].

思路:先按start对intervals进行排序,然后逐个合并

代码:

/** * 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 cmp(Interval m1,Interval m2){        return m1.start<m2.start;}class Solution {public:    vector<Interval> merge(vector<Interval> &intervals) {        int len=intervals.size();        vector<Interval> res;        if(len==0) return res;        if(len==1) return intervals;        sort(intervals.begin(),intervals.end(),cmp);        for(int i=1;i<len;i++){            if(intervals[i].start>intervals[i-1].end){                res.push_back(intervals[i-1]);            }            if(intervals[i].start<=intervals[i-1].end){                if(intervals[i-1].end>intervals[i].end){                    intervals[i].start=intervals[i-1].start;                    intervals[i].end=intervals[i-1].end;                }                else{                    intervals[i].start=intervals[i-1].start;                }            }        }        res.push_back(intervals[len-1]);        return res;    }};


0 0