您的位置:首页 > 其它

leetcode -- Merge Intervals

2014-08-15 20:03 288 查看

关键不是怎么想,而是怎么做

[问题描述]

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

[解题思路]

排序 + 比较

bool cmp_Interval(Interval a, Interval b)
{
return a.start == b.start?(a.end < b.end):(a.start < b.start);
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
std::vector<Interval> ans;
if (intervals.size() == 0)
return ans;
std::sort(intervals.begin(), intervals.end(), cmp_Interval);
ans.push_back(intervals[0]);
for (int i = 0; i < intervals.size(); i ++){
if (ans[ans.size() - 1].end >= intervals[i].start)
ans[ans.size() - 1].end = std::max(ans[ans.size() - 1].end, intervals[i].end);
else
ans.push_back(intervals[i] );
}
return ans;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: