Employee Free Time Posted on 2018-10-16 Descriptionhttps://leetcode.com/problems/employee-free-time/description/ Solution123456789101112131415161718192021222324252627282930313233343536373839404142/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end(e) {} * }; */class Solution { public: bool static compare(Interval& a, Interval& b) { return a.start < b.start; } vector<Interval> employeeFreeTime(vector<vector<Interval>>& schedule) { vector<Interval> whole; for (auto& item : schedule) { for (auto& item2 : item) { whole.push_back(item2); } } sort(whole.begin(), whole.end(), compare); int pre = -1; vector<Interval> merged; for (int index = 0; index < whole.size(); ++index) { if (whole[index].start > pre) { merged.push_back(whole[index]); }else { merged[merged.size() - 1].end = max(whole[index].end, merged[merged.size() - 1].end); } pre = merged[merged.size() - 1].end; } vector<Interval> ret; for (int index = 0; index < merged.size() - 1; ++index) { ret.push_back(Interval(merged[index].end, merged[index + 1].start)); } return ret; }};