56. Merge Intervals
Medium
2757219FavoriteShare
Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:
Input: [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considered overlapping.
NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.
Accepted
439,686
Submissions
1,184,626
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
sort(intervals.begin(),intervals.end());//按照左区间边界从小到大排序
int n=intervals.size();
if(n<=1) return intervals;
int left=intervals[0][0];
int right=intervals[0][1];
vector<vector<int>> rt;
for(int i=1;i<n;i++){
int templeft=intervals[i][0];//依次比较边界关系并push
int tempright=intervals[i][1];
if(templeft<=right){
if(tempright>=right){
left=left;
right=tempright;
}else{
left=left;
right=right;
}
}else{
vector<int> tmp;
tmp.push_back(left);
tmp.push_back(right);
rt.push_back(tmp);
left=templeft;
right=tempright;
}
if(i==n-1){
vector<int> tp;
tp.push_back(left);
tp.push_back(right);
rt.push_back(tp);
}
}
return rt;
}
public://这个是多余的
bool cmp(vector<int> a,vector<int> b){
return a[0]<b[0];
}
};