具体代码:
区间合并;
具体算法:
// // Definition for an Interval.
// class Interval {
// public:
// int start;
// int end;
// Interval() {}
// Interval(int _start, int _end) {
// start = _start;
// end = _end;
// }
// };
class Solution {
public:
bool static cmp(Interval& a,Interval& b){
return a.start<b.start;
}
vector<Interval> employeeFreeTime(vector<vector<Interval>> schedule) {
int minn=INT_MAX;
int maxn=INT_MIN;
vector<Interval>vec;
vector<pair<int,int>>ret;
vector<Interval>result;
for(auto& sch:schedule){
for(auto& ins:sch){
minn=min(minn,ins.start);
maxn=max(maxn,ins.end);
vec.push_back(ins);
}
}
sort(vec.begin(),vec.end(),cmp);
int start=vec[0].start;
int end=vec[0].end;
for(int i=1;i<vec.size();i++){
if(vec[i].start>end){
ret.push_back({start,end});
start=vec[i].start;
end=vec[i].end;
if(i==vec.size()-1){
ret.push_back({start,end});
}
continue;
}
end=max(vec[i].end,end);
if(i==vec.size()-1){
ret.push_back({start,end});
}
}
for(int i=1;i<ret.size();i++){
int x=ret[i-1].second;
int y=ret[i].first;
Interval ni(x,y);
result.push_back(ni);
}
return result;
}
};