05 August 2008
我们得到了一份员工列表,它代表了每个员工的工作时间。
每个员工都有一个不重叠区间的列表,这些区间按顺序排列。
返回表示所有员工的公共、正长度空闲时间的有限区间列表,也按排序顺序。
(尽管我们以 [x, y] 的形式表示区间,但里面的对象是区间,而不是列表或数组。例如,schedule[0][0].start = 1, schedule[0][0]。 end = 2,并且没有定义 schedule[0][0][0])。此外,我们不会在答案中包含像 [5, 5] 这样的区间,因为它们的长度为零。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/*
// Definition for an Interval.
class Interval {
public int start;
public int end;
public Interval() {}
public Interval(int _start, int _end) {
start = _start;
end = _end;
}
};
*/
class Solution {
public List<Interval> employeeFreeTime(List<List<Interval>> schedule) {
List<Interval> result = new ArrayList<>();
List<Interval> timeLine = new ArrayList<>();
schedule.forEach(e -> timeLine.addAll(e));
timeLine.sort(((a, b) -> a.start - b.start));
Interval interval = timeLine.get(0);
for (Interval each : timeLine) {
if (interval.end < each.start) {
result.add(new Interval(interval.end, each.start));
interval = each;
} else {
interval = interval.end < each.end ? each : interval;
}
}
return result;
}
}