class Solution { public: static bool cmp(Interval v1,Interval v2){ return v1.start <= v2.start; } vector<Interval> merge(vector<Interval> &intervals) { vector<Interval> ans; if(!intervals.size()) return ans; sort(intervals.begin(), intervals.end(), cmp); // 按start 排序 ans.push_back(intervals[0]); for(int i = 1; i < intervals.size(); i++){ if(intervals[i].start <= ans.back().end){ // 当intervals[i]与ans中最后一个区间中有重叠 ,不需要额外添加区间只需要更改ans最后区间的end值即可 ans.back().end = max(ans.back().end, intervals[i].end); } else{ // 没有重叠直接添加区间 ans.push_back(intervals[i]); } } return ans; } };