LeetCode: Merge Intervals

来源:互联网 发布:怎么做网络主播 编辑:程序博客网 时间:2024/06/15 08:09

思路:先对区间进行排序,按照起始点进行升序排列,然后使用贪心算法,对于目前的区间[start, end],找到下一个区间[start_i, end_i] ,因为已经排好序了,所以,start_i >= start,只考虑与end的比较,如果start_i <end 说明区间有重合,可以合并,如果start_i > end说明与当前区间没有交集,将当前区间存入解向量中,继续后面的搜索。

code:

bool cmp(const Interval &A, const Interval &B ){    return A.start < B.start;}class Solution {public:    vector<Interval> merge(vector<Interval> &intervals) {        vector<Interval> ret;        if(intervals.empty())return ret;        sort(intervals.begin(),intervals.end(),cmp);        Interval curInter = intervals[0];        for(int i=1;i<intervals.size();i++){            if(intervals[i].start <= curInter.end)                curInter.end = max(curInter.end,intervals[i].end);            else{                ret.push_back(curInter);                curInter = intervals[i];            }        }        ret.push_back(curInter);        return ret;    }};


0 0