先给Intervals数组按start从小到大开始排序,然后,每次判断右边的Intervals.start是否小于前面所有的Interval.end即前面Intervals.end的最大值,是则还在同一个区间内,否则不在同一区间内
class Solution {
public:
static bool cmp(struct Interval a,struct Interval b){
return a.start<b.start;
}
vector<Interval> merge(vector<Interval> &intervals) {
int n=intervals.size();
if(n<1)return {};
vector<Interval>ans;
sort(intervals.begin(),intervals.end(),cmp);
int left=0,right=left+1;
for(int i=0;i<n;){
int j=i+1,t=i;
int m=intervals[i].end;
while(j<n&&intervals[j].start<=m){
m=max(intervals[j].end,m);
++j;
++i;
}
struct Interval *one=new Interval(intervals[t].start,m);
ans.push_back(*one);
i=j;
}
return ans;
}
};
京公网安备 11010502036488号