• 【LeetCode & 剑指offer刷题】查找与排序题13:Merge Intervals


    【LeetCode & 剑指offer 刷题笔记】目录(持续更新中...)

    Merge Intervals

    Given a collection of intervals, merge all overlapping intervals.
    Example 1:
    Input: [[1,3],[2,6],[8,10],[15,18]]
    Output: [[1,6],[8,10],[15,18]]
    Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
    Example 2:
    Input: [[1,4],[4,5]]
    Output: [[1,5]]
    Explanation: Intervals [1,4] and [4,5] are considerred overlapping.

    C++
     
    /**
     * Definition for an interval.
     * struct Interval {
     *     int start;
     *     int end;
     *     Interval() : start(0), end(0) {}
     *     Interval(int s, int e) : start(s), end(e) {}
     * };
     */
    //问题:区间合并
    /*
    方法:将各区间按照第一个元素排序,如果没有重叠,逐个将区间push到结果容器中,
    如果有重叠,进行区间合并,修改前一个区间第二个元素即可
    */
    class Solution
    {
    public:
        //自定义函数对象排序(或声明为static类型的函数也可以)
        struct
        {
            bool operator()(Interval& a, Interval& b)//这里用Interval&引用变量比较好,节省时间
            {
                return a.start<b.start;
            }
        } customLess;
           
        vector<Interval> merge(vector<Interval>& ins)
        {
            vector<Interval> res;
            if(ins.empty()) return res;
            sort(ins.begin(), ins.end(),customLess);//按第一个变量排序
            
            res.push_back(ins[0]);
            for(int i=1; i<ins.size(); i++)
            {
                if(ins[i].start > res.back().end) res.push_back(ins[i]); //如果没有重叠时
                else res.back().end = max(res.back().end, ins[i].end); //如果有重叠时,end选较大的那个
            }
           
            return res;
        }
       
    };
     
  • 相关阅读:
    100以内整数四则运算
    软件工程基础
    使用python分析微信好友
    数据库实践
    爬虫
    Python编程预测比赛成绩
    自己的第一个网页
    科学计算与可视化
    对小学生四则运算用界面呈现
    在使用memory_profiler检测python代码运行时内存出现解码错误
  • 原文地址:https://www.cnblogs.com/wikiwen/p/10225962.html
Copyright © 2020-2023  润新知