The Employee Free Time problem involves finding the common free time intervals across multiple employees' schedules. Each employee's schedule is represented as a list of non-overlapping intervals.
public List employeeFreeTime(List> schedule) {
List allIntervals = new ArrayList<>();
for (List employee : schedule) {
allIntervals.addAll(employee);
}
// Sort intervals by start time
allIntervals.sort((a, b) -> Integer.compare(a.start, b.start));
List freeTime = new ArrayList<>();
Interval prev = allIntervals.get(0);
for (int i = 1; i < allIntervals.size(); i++) {
Interval curr = allIntervals.get(i);
if (prev.end < curr.start) {
// Gap found
freeTime.add(new Interval(prev.end, curr.start));
}
prev = prev.end >= curr.end ? prev : curr;
}
return freeTime;
}
Input: schedule = [[[1,2],[5,6]],[[1,3]],[[4,10]]]
Output: [[3,4]]
Explanation: There is a free time gap between [3,4].