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]
.
思路:先按照start进行排序,再合并。
代码:
bool TIsShort(const Interval &s1,const Interval &s2)
{
return s1.start<s2.start;
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
if(intervals.empty())
{
return intervals;
}
sort(intervals.begin(),intervals.end(),TIsShort);
vector<Interval> ::iterator it=intervals.begin();
while((it+1) != intervals.end())
{
vector<Interval> ::iterator temp=it+1;
if((*it).end>=(*temp).start)
{
if((*it).end < (*temp).end)
{
(*it).end=(*temp).end;
}
intervals.erase(temp);
}
else
{
++it;
}
}
return intervals;
}
};