题目描述:
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()) return intervals;
for(int i=0;i<intervals.size();i++)
{
int current_min_index=i;
int current_min=intervals[i].start;
for(int j=i;j<intervals.size();j++)
{
if(current_min>intervals[j].start)
{
current_min=intervals[j].start;
current_min_index=j;
}
}
Interval temp=intervals[i];
intervals[i]=intervals[current_min_index];
intervals[current_min_index]=temp;
}
vector<Interval> result;
result.push_back(intervals[0]);
for(int i=0;i<intervals.size();i++)
{
int n=result.size()-1;
if(intervals[i].start<=result[n].end)
result[n].end=max(result[n].end,intervals[i].end);
else result.push_back(intervals[i]);
}
return result;
}
};

本文介绍了一种有效的区间合并算法,该算法首先对输入的区间按起始点排序,然后遍历区间数组并检查每个区间是否与已合并的区间重叠。若重叠则更新合并区间的结束点;否则将新区间加入结果集。

被折叠的 条评论
为什么被折叠?



