759. Employee Free Time
Problem description:
We are given a list schedule
of employees, which represents the working time for each employee.
Each employee has a list of non-overlapping Intervals
, and these intervals are in sorted order.
Return the list of finite intervals representing common, positive-length free time for all employees, also in sorted order.
(Even though we are representing Intervals
in the form [x, y]
, the objects inside are Intervals
, not lists or arrays. For example, schedule[0][0].start = 1
, schedule[0][0].end = 2
, and schedule[0][0][0]
is not defined). Also, we wouldn’t include intervals like [5, 5] in our answer, as they have zero length.
Example 1:
1 | Input: schedule = [[[1,2],[5,6]],[[1,3]],[[4,10]]] |
Example 2:
1 | Input: schedule = [[[1,3],[6,7]],[[2,4]],[[2,5],[9,12]]] |
Constraints:
1 <= schedule.length , schedule[i].length <= 50
0 <= schedule[i].start < schedule[i].end <= 10^8
Solution:
takes into account that all employees lists are already sorted. heap helps to iterate schedule in a sorted manner for O(n*log(k)).
1 | """ |
time complexity: $O(nlogk)$, n is number of intervals across all employees, k is number of employees
space complexity: $O(k)$
reference:
related problem: