题目:
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]
.
代码如下:
struct Interval {
int start;
int end;
Interval() : start(0), end(0) {}
Interval(int s, int e) : start(s), end(e) {}
};
void sort(vector<Interval> &intervals)
{
for(int i=1;i<intervals.size();i++)
{
for(int j=0;j<i;j++)
{
if(intervals[j].start>intervals[i].start)
{
int tmpl=intervals[j].start,tmpr=intervals[j].end;
intervals[j].start=intervals[i].start;
intervals[j].end=intervals[i].end;
intervals[i].start=tmpl;
intervals[i].end=tmpr;
}
}
}
}
vector<Interval> merge(vector<Interval> &intervals)
{
vector<Interval> result;
if(intervals.size()<=1)return intervals;
sort(intervals);
int first=intervals[0].start,second=intervals[0].end;
for(int i=1;i<intervals.size();i++)
{
if(intervals[i].start<=second)
{
second=intervals[i].end>second?intervals[i].end:second;
}
else
{
Interval temp(first,second);
result.push_back(temp);
first=intervals[i].start;
second=intervals[i].end;
}
}
Interval temp(first,second);
result.push_back(temp);
return result;
}