Merge Intervals

    xiaoxiao2021-03-25  101

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

    * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * };

    这题主要在一个排序。 如果排序之后,假设已经由[a1,b1],[a2,b2]已经满足题目要求,不存在交集,加入[a3,b3]。只需要考虑a3和b2之间的大小,也就是只需要考虑和最后一个Interval是否冲突,同时需要考虑b3小于b2的特殊情况。

    bool cmp(Interval left,Interval right){ if(left.start<right.start) return true; else return false; } class Solution { public: vector<Interval> merge(vector<Interval>& intervals) { //stack<Interval> temp; vector<Interval> rst; if(intervals.size()==0) return rst; sort(intervals.begin(),intervals.end(),cmp); rst.push_back(intervals[0]); for(int i=1;i<intervals.size();i++){ Interval temp=rst.back(); if(intervals[i].start>temp.end) rst.push_back(intervals[i]); if(intervals[i].start<=temp.end&&intervals[i].end>temp.end){ temp.end=intervals[i].end; rst.pop_back(); rst.push_back(temp); } } return rst; } };
    转载请注明原文地址: https://ju.6miu.com/read-5444.html

    最新回复(0)