Employee Free Time
Understand how to find common free time intervals among multiple employees by applying interval analysis patterns. This lesson helps you solve overlapping interval problems efficiently through structured steps and practical coding exercises.
We'll cover the following...
Statement
You are given schedule, a list where each element contains the working hours of one employee.
Each employee’s working hours are represented as a list of Interval objects that are already sorted and do not overlap.
Return all finite intervals with non-zero duration during which all employees are simultaneously free. The resulting list of free intervals should also be sorted in ascending order.
Note: The intervals are represented as objects, not arrays. For example,
schedule[1][1].start = 1andschedule[1][1].end = 2, whileschedule[0][0][0]is invalid. Do not include intervals with zero length (for example,[3, 3]) in the output.
Constraints:
-
schedule.length,schedule[i].length -
interval.start<interval.end, whereintervalis any interval in the list of schedules.
Examples
Understand the problem
Let’s take a moment to make sure you’ve correctly understood the problem. The quiz below helps you check if you’re solving the correct problem:
Employee Free Time
From the given list of employee schedules, find the list of intervals representing the free time for all the employees.
[[[3, 5], [8, 10]], [[4, 6], [9, 12]], [[5, 6], [8, 10]]]
[[2, 8]]
[[6, 8]]
[[2, 6]]
[[4, 6]]
Figure it out!
We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.
Try it yourself
Implement your solution in EmployeeFreeTimes.java in the following coding playground. We have provided the definition of the Interval class in the other file. You may add functionality to this class if you wish.
import java.util.*;class Solution {public static List<Interval> employeeFreeTime(List<List<Interval>> schedule) {// Replace this placeholder return statement with your codeList<Interval> ans = new ArrayList<Interval>();return ans;}}