题目:
解答:
按照start的大小对vector<Interval> intervals进行排序,排序之后根据end和start大小的比较 生成新的区间,记得循环结束后还要插入一个区间。
注意cmp函数的标准写法。!!!
cmp函数不能放在类里面。
代码:
//比较函数的标准写法
//返回值 bool
//参数 const Interval &a
// const 型 引用
bool cmp(const Interval &a, const Interval &b)
{
return a.start < b.start;
}
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
int begin, end;
vector<Interval> res;
if (intervals.size() == 0)
return res;
//排序
sort(intervals.begin(), intervals.end(), cmp);
begin = intervals[0].start;
end = intervals[0].end;
for (int i = 1; i < intervals.size(); i++)
{
if (intervals[i].start > end)
{
Interval *temp = new Interval(begin, end);
res.push_back(*temp);
begin = intervals[i].start;
end = intervals[i].end;
}
else
{
end = intervals[i].end > end ? intervals[i].end : end;
}
}
Interval *temp = new Interval(begin, end);
res.push_back(*temp);
return res;
}
};