题目描述:
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。示例:
输入: intervals = [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]输入: intervals = [[1,4],[4,5]]
输出: [[1,5]]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution
{
public:
// 双指针
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> result;
sort(intervals.begin(), intervals.end());
vector<int> prev = intervals[0];
for(int i=1; i<intervals.size(); i++){
vector<int> cur = intervals[i];
if(prev[1] >= cur[0]){
prev[1] = max(prev[1], cur[1]);
}else{
result.push_back(prev);
prev = cur;
}
}
result.push_back(prev);
return result;
}
};