您的位置:首页 > 其它

【LeetCode】Merge Intervals

2014-06-15 15:15 399 查看
题目描述:

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]
.
直接用的sort排序……不知道算不算偷懒……
不用sort排序的话直接用归并排序,在排序的过程中进行合并区间的操作即可。

代码:

/**
* Definition for an interval.
* struct Interval {
*     int start;
*     int end;
*     Interval() : start(0), end(0) {}
*     Interval(int s, int e) : start(s), end(e) {}
* };
*/
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
if (intervals.empty())
return vector<Interval>();
vector<Interval> ret;
sort(intervals.begin(), intervals.end(), compare);
int l(intervals[0].start), r(intervals[0].end);
for (int i = 0; i < intervals.size(); i++){
if (intervals[i].start>r){
ret.push_back(Interval(l, r));
l = intervals[i].start;
}
r = max(intervals[i].end, r);
}
ret.push_back(Interval(l, r));
return ret;
}
static bool compare(const Interval i1, const Interval i2){
return i1.start < i2.start;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: