关闭

leetcode_c++:Merge_Intervals(056)

197人阅读 评论(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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:124196次
    • 积分:6900
    • 等级:
    • 排名:第3507名
    • 原创:589篇
    • 转载:2篇
    • 译文:0篇
    • 评论:2条
    最新评论