/*// Definition for an Interval.class Interval { public int start; public int end; public Interval() {} public Interval(int _start, int _end) { start = _start; end = _end; }};*/classSolution{publicList<Interval>employeeFreeTime(List<List<Interval>>schedule){List<Interval>intervals=newArrayList<>();for(List<Interval>e:schedule){intervals.addAll(e);}intervals.sort((a,b)->a.start==b.start?a.end-b.end:a.start-b.start);List<Interval>merged=newArrayList<>();merged.add(intervals.get(0));for(inti=1;i<intervals.size();++i){Intervallast=merged.get(merged.size()-1);Intervalcur=intervals.get(i);if(last.end<cur.start){merged.add(cur);}else{last.end=Math.max(last.end,cur.end);}}List<Interval>ans=newArrayList<>();for(inti=1;i<merged.size();++i){Intervala=merged.get(i-1);Intervalb=merged.get(i);ans.add(newInterval(a.end,b.start));}returnans;}}
/*// Definition for an Interval.class Interval {public: int start; int end; Interval() {} Interval(int _start, int _end) { start = _start; end = _end; }};*/classSolution{public:vector<Interval>employeeFreeTime(vector<vector<Interval>>schedule){vector<Interval>intervals;for(auto&e:schedule){intervals.insert(intervals.end(),e.begin(),e.end());}sort(intervals.begin(),intervals.end(),[](constInterval&a,constInterval&b){if(a.start==b.start)returna.end<b.end;returna.start<b.start;});vector<Interval>merged;merged.push_back(intervals[0]);for(inti=1;i<intervals.size();++i){auto&last=merged.back();auto&cur=intervals[i];if(last.end<cur.start){merged.push_back(cur);}else{last.end=max(last.end,cur.end);}}vector<Interval>ans;for(inti=1;i<merged.size();++i){auto&a=merged[i-1];auto&b=merged[i];ans.emplace_back(a.end,b.start);}returnans;}};
/** * Definition for an Interval. * type Interval struct { * Start int * End int * } */funcemployeeFreeTime(schedule[][]*Interval)[]*Interval{varintervals[]*Intervalfor_,e:=rangeschedule{intervals=append(intervals,e...)}sort.Slice(intervals,func(i,jint)bool{ifintervals[i].Start==intervals[j].Start{returnintervals[i].End<intervals[j].End}returnintervals[i].Start<intervals[j].Start})merged:=[]*Interval{intervals[0]}for_,cur:=rangeintervals[1:]{last:=merged[len(merged)-1]iflast.End<cur.Start{merged=append(merged,cur)}elseifcur.End>last.End{last.End=cur.End}}varans[]*Intervalfori:=1;i<len(merged);i++{a,b:=merged[i-1],merged[i]ans=append(ans,&Interval{Start:a.End,End:b.Start})}returnans}