key1: check vector is empty
key2: sort vector
key3: vector has functon of vector.back() // get the last element;
static bool cmp(Interval a, Interval b){
if(a.start == b.start)
return a.end < b.end;
else{
return a.start < b.start;
}
}
vector<Interval> merge(vector<Interval> &intervals) {
int len = intervals.size();
if(len == 0) return vector<Interval>{};
sort(intervals.begin(), intervals.end(),cmp);
vector<Interval> res;
res.push_back(intervals[0]);
for (int i = 1; i < intervals.size(); i++) {
if (res.back().end < intervals[i].start) res.push_back(intervals[i]);
else
res.back().end = max(res.back().end, intervals[i].end);
}
return res;
}
本文介绍了一种区间合并算法,该算法通过排序和遍历的方式合并重叠的区间。首先定义了一个比较函数cmp用于按区间起点排序,若起点相同则按终点排序。接着实现merge函数,对输入的区间进行排序后逐个检查并合并相邻且重叠的区间。
256

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



