/** * struct Interval { * int start; * int end; * Interval(int s, int e) : start(start), end(e) {} * }; */ class Solution { public: vector<Interval> merge(vector<Interval>& intervals) { if(intervals.empty())return {}; //为空的情况 auto compare = [&](Interval a, Interval b){return a.start < b.start;}; //内部规定,ture时应该严格要求大于或小于不能小于等于,不然相同时会乱序(堆排序) sort(intervals.begin(), intervals.end(), compare); vector<Interval> ans; ans.push_back(intervals[0]); for(int i=1; i < intervals.size(); i++){ if( intervals[i].start <= ans.back().end){ ans.back().end = max( ans.back().end, intervals[i].end ); //有重叠,则合并 }else{ ans.push_back(intervals[i]); //没有合并,则添加新的结构体 } } return ans; } };