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 considerred overlapping.
顾名思义,合并间隔
那么先排序,维护开头位置s,和递推当前最大能到的位置e
感觉和上一个题差不多
bool cmp(Interval x,Interval y){return (x.start<y.start);}
class Solution {
public:
vector<Interval> merge(vector<Interval>& intervals) {
int n=intervals.size();
sort(intervals.begin(),intervals.end(),cmp);
vector<Interval> ans;
if(n==0)
return ans;
int maxn=0,s=intervals[0].start,e=intervals[0].end;
for(int i=1;i<n;i++){
if(intervals[i].start<=e)
e=max(e,intervals[i].end);
else{
ans.push_back(Interval(s,e));
s=intervals[i].start;
e=intervals[i].end;
}
}
ans.push_back(Interval(s,e));
return ans;
}
};