56. Merge Intervals【力扣】

题意理解

区间合并

问题分析

直接合并,需要考虑包含,相交关系。

先排序,这样就比较后一个和前一个的相交或相离的关系。

其他

对结构体排序,用到lambda表达式。

链接

    vector<Interval> merge(vector<Interval>& intervals) {
        vector<Interval> results;
        
        sort(intervals.begin(), intervals.end(), [](Interval a, Interval b){return a.start < b.start;}); //排序结构体start值
        int len = intervals.size();
        for(int i = 0; i < len; i ++)    //对于新的区间
        {
            //如果合并后的区间集合是空,或是合并后的最后一个区间尾小于新区间的头
            if (results.size() == 0 || results.back().end < intervals[i].start)
                results.push_back(intervals[i]);    //直接插入新区间
            else
                //合并后的最后一个区间尾和新区间尾取大值为后并后的最后一个区间的尾
                results.back().end = max(results.back().end, intervals[i].end);
        }
        return results;
    }

猜你喜欢

转载自blog.csdn.net/xiexie1357/article/details/88309402