码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode 156. 合并区间

时间:2018-01-28 22:01:55      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:continue   int start   inter   合并   ble   ref   div   end   区间   

给出若干闭合区间,合并所有重叠的部分。

 

样例

给出的区间列表 => 合并后的区间列表:

[                     [
  [1, 3],               [1, 6],
  [2, 6],      =>       [8, 10],
  [8, 10],              [15, 18]
  [15, 18]            ]
]
挑战 

O(n log n) 的时间和 O(1) 的额外空间。

 

/**
 * Definition of Interval:
 * classs Interval {
 *     int start, end;
 *     Interval(int start, int end) {
 *         this->start = start;
 *         this->end = end;
 *     }
 */


class Solution {
public:
    /*
     * @param intervals: interval list.
     * @return: A new interval list.
     */
    static bool cmp(Interval &i,Interval &j)
    {
        return i.start<j.start;
    }
    vector<Interval> merge(vector<Interval> &intervals) {
        // write your code here
        if(intervals.size()==0)
            return intervals;
        sort(intervals.begin(),intervals.end(),cmp);
        for(int i=0;i<intervals.size()-1;)
        {
            Interval cur=intervals[i];
            Interval next=intervals[i+1];
            
            if(next.start<=cur.end)
            {
                if(next.start<cur.start)
                {
                    cur.start=next.start;
                }
                if(next.end>cur.end)
                {
                    cur.end=next.end;
                }
                intervals.erase(intervals.begin()+i+1);
                intervals[i]=cur;

                continue;
            }
            i++;
            
        }
        return intervals;
    }
};

 

LintCode 156. 合并区间

标签:continue   int start   inter   合并   ble   ref   div   end   区间   

原文地址:https://www.cnblogs.com/zslhg903/p/8372353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!