/**
* struct Interval {
* int start;
* int end;
* Interval(int s, int e) : start(start), end(e) {}
* };
*/
#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param intervals Interval类vector
* @return Interval类vector
*/
vector<Interval> merge(vector<Interval>& intervals) {
// write code here
int n = intervals.size();
vector<Interval> ans;
if(n==0)
return ans;
sort(intervals.begin(), intervals.end(), [](Interval a, Interval b){
if(a.start!=b.start)
return a.start<b.start;
else
return a.end < b.end;
});
int start = intervals[0].start;
int end = intervals[0].end;
for(auto interval:intervals)
{
// cout << start << ", " << end << ", " << interval.start << ", " << interval.end << endl;
// 没有交集
if(end < interval.start)
{
ans.emplace_back(Interval(start,end));
// 新的开始
start = interval.start;
end = interval.end;
}
// 有交集
else
{
start = min(start, interval.start);
end = max(end, interval.end);
};
}
// intervals 最后的一个位置比较后单独处理
ans.emplace_back(Interval(start,end));
return ans;
}
};