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;
    }
};