leetcode-Merge Intervals

来源:互联网 发布:怎样看待网络语言暴力 编辑:程序博客网 时间:2024/06/08 10:14

描述: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].

/** * Definition for an interval. * struct Interval { *     int start; *     int end; *     Interval() : start(0), end(0) {} *     Interval(int s, int e) : start(s), end(e) {} * }; */

找出公共区间,并合并

本题首先要按照Interval的start进行排序

static bool comp(const Interval& i1,const Interval& i2)  {          return i1.start < i2.start;}
sort(intervals.begin(),intervals.end(),comp);
完整代码

class Solution {public:    static bool comp(const Interval& i1,const Interval& i2)      {          return i1.start < i2.start;    }    vector<Interval> merge(vector<Interval> &intervals) {        if(intervals.size()==0)        {            return intervals;        }        sort(intervals.begin(),intervals.end(),comp);        vector<Interval> result;        result.push_back(intervals[0]);        int j=0;        for(int i=1;i<intervals.size();i++)        {            if((intervals[i].start<result[j].end || intervals[i].start==result[j].end) && intervals[i].end>result[j].end)            {                result[j].end=intervals[i].end;            }            else if(intervals[i].start>result[j].end)            {                result.push_back(intervals[i]);                j++;            }        }        return result;    }};



0 0
原创粉丝点击