您的位置:首页 > 其它

56. Merge Intervals (Array; Project)

2015-12-05 10:35 218 查看
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].

class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
if(intervals.empty() || intervals.size() == 1) return intervals;
for(vector<Interval>::iterator it = intervals.begin()+1; it < intervals.end();it++)
{
for(vector<Interval>::iterator innerIt = intervals.begin(); innerIt < it;innerIt++)
{
int left = min(it->start, innerIt->start);
int right = max(it->end, innerIt->end);
int size1 = (it->end) - (it->start);
int size2 = (innerIt->end) - (innerIt->start);
if(right - left > size1 + size2) //求线段是否重叠:比较投影的左右端点间长度与线段长度和
continue;
else
{
innerIt->start = left;
innerIt->end = right;
intervals.erase(it);
it = innerIt;
break;
}
}
}
return intervals;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: