关闭

leetcode_c++:Merge_Intervals(056)

145人阅读 评论(0) 收藏 举报
分类:

题目

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


算法

复杂度:O(nm)


#include<iostream>
#include<vector>
#include <algorithm>

using namespace std;

const int N=0;


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


bool isLess(const Interval &a, const Interval &b){
    return a.start<b.start;
}

class Solution{
    public:
    vector<Interval> merge(vector<Interval> &intervals){
        int nSize=intervals.size();
        vector<Interval>  result;
        if(nSize==0)
            return result;

        sort(intervals.begin(),intervals.end(),isLess);
        Interval val=intervals[0];
        Interval next;
        for(int i=1;i<nSize;++i){
            next=intervals[i];
            if(next.start>val.end){
                result.push_back(val);
                val=next;

            }else{
                val.end=val.end>next.end? val.end:next.end;
            }

        }

        result.push_back(val);
        return result;
    }
};
0
0

猜你在找
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【套餐】深度学习入门视频课程——唐宇迪
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】计算机视觉原理及实战——屈教授
【直播】机器学习之凸优化——马博士
【直播】机器学习&数据挖掘7周实训--韦玮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:102143次
    • 积分:6680
    • 等级:
    • 排名:第3493名
    • 原创:589篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    最新评论