zoukankan      html  css  js  c++  java
  • [LeetCode] Merge Intervals

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

    Hide Tags
     Array Sort
     
     
    思路:首先按照start对interval排序,然后查看前一个的end是否和后一个的start相交,若相交,将pre标记成invalid,合并pre和cur,直至最后。不知道为啥这个题目被标记成hard

     另外注意: 采用自定义的比较函数,必须申明为全局函数,不能是类的成员函数。

    /**
     * Definition for an interval.
     * struct Interval {
     *     int start;
     *     int end;
     *     Interval() : start(0), end(0) {}
     *     Interval(int s, int e) : start(s), end(e) {}
     * };
     */
    bool cmp(Interval i, Interval j)
    {
        return i.start < j.start;
    }
    
    class Solution {
        public:
    
            vector<Interval> merge(vector<Interval> &intervals)
            {
                size_t n = intervals.size();
                vector<bool> valid(n, true);
                vector<Interval> res;
    
                sort(intervals.begin(), intervals.end(), cmp);
    
    #if 0
                for(int i = 0; i < intervals.size(); i++)
                {
                    cout << "[" << intervals[i].start << "," << intervals[i].end << "]	" ;
                }
                cout << endl;
    #endif
    
    
                for(int i = 1; i < n; i++)
                {   
                    Interval & pre = intervals[i-1];
                    Interval & cur = intervals[i];
    
                    if(pre.end >= cur.start)
                    {   
                        valid[i-1] = false;
    
                        cur.start = pre.start;
                        if(pre.end > cur.end)
                            cur.end = pre.end;
                    }
                }
    
                for(int i = 0; i < n; i++)
                {
    //                cout << valid[i] << endl;
                    if(valid[i] == true)
                        res.push_back(intervals[i]);
                }
    
                return res;
            }
    };
  • 相关阅读:
    linux下yum无法使用
    判断某个网卡是否是dhcp获取的ip
    个人作业---词频统计
    第四周读书笔记
    设计关键词
    好文收藏
    Apritag角点代码检测
    处理txt文件,保存为yml和cal文件
    欧拉角欧拉矩阵
    Mysql笔记01-安装和SQL基础
  • 原文地址:https://www.cnblogs.com/diegodu/p/4316377.html
Copyright © 2011-2022 走看看