您的位置:首页 > 其它

leetcode--Merge Intervals

2013-08-27 00:45 399 查看
1.题目描述

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

[/code]



2.解法分析


题目很简单。只是自定义的排序仿函数要放在solution类外面,否则会出现如下错误:

Line 23: no matching function for call to 'sort(std::vector<Interval>::iterator, std::vector<Interval>::iterator, <unresolved overloaded function type>)'


代码如下:


[code]/**


* 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 lc(const Interval &a,const Interval &b)


{


return a.start<b.start;


}


 


class Solution {


public:


 


 


vector<Interval> merge(vector<Interval> &intervals) {


// Start typing your C/C++ solution below


// DO NOT write int main() function


vector<Interval>result;


if(intervals.empty())return result;




std::sort(intervals.begin(),intervals.end(),lc);


Interval cur=intervals[0];




int len=intervals.size();


if(len==1)return intervals;




int i=1;


while(i<len)


{


if(cur.end>=intervals[i].start)


{


cur.end=max(intervals[i].end,cur.end);


}




else


{


result.push_back(cur);


cur=intervals[i];


}


i++;


}




if(result.empty()||result.back().end<cur.start)result.push_back(cur);


return result;










}




};

[/code]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: