// sort a vector (which only has two elements) based on the first element bool operator<(vector &A, vector &B){ if(A[0]> merge(vector>& intervals) { if(intervals.empty()){ return {}; } std::sort(intervals.begin(), intervals.end()); vector> result; int size = intervals.size(); // traverse the vector for(int i=0;i (result.back())[1]){ result.push_back(intervals[i]); }else{ // if there is an overlap, then update the last element's second element, if it's smaller than the second element of the currently visited interval. if((result.back())[1] < intervals[i][1]){ (result.back())[1] = intervals[i][1]; } } } return result; } };