759. Employee Free Time

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 = 1schedule[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:

Input: schedule = [[[1,2],[5,6]],[[1,3]],[[4,10]]]
Output: [[3,4]]
Explanation: There are a total of three employees, and all common
free time intervals would be [-inf, 1], [3, 4], [10, inf].
We discard any intervals that contain inf as they aren't finite.

Example 2:

Input: schedule = [[[1,3],[6,7]],[[2,4]],[[2,5],[9,12]]]
Output: [[5,6],[7,9]]

 1 class Solution {
 2     public List<Interval> employeeFreeTime(List<List<Interval>> avails) {
 3         List<Interval> result = new ArrayList<>();
 4         List<Interval> timeLine = new ArrayList<>();
 5         avails.forEach(e -> timeLine.addAll(e));
 6         Collections.sort(timeLine, ((a, b) -> a.start - b.start));
 7 
 8         Interval temp = timeLine.get(0);
 9         for(Interval each : timeLine) {
10             if(temp.end < each.start) {
11                 result.add(new Interval(temp.end, each.start));
12                 temp = each;
13             }else{
14                 temp = temp.end < each.end ? each : temp;
15             }
16         }
17         return result;
18     }
19 }

 

posted @ 2021-04-08 08:13  北叶青藤  阅读(54)  评论(0编辑  收藏  举报