Skip to content

Commit 59b3019

Browse files
authored
Add maxFreeTime method to Solution class
1 parent 2c382ee commit 59b3019

File tree

1 file changed

+44
-0
lines changed
  • solution/3400-3499/3440.Reschedule Meetings for Maximum Free Time II

1 file changed

+44
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class Solution:
2+
def maxFreeTime(
3+
self, eventTime: int, startTime: List[int], endTime: List[int]
4+
) -> int:
5+
n = len(startTime)
6+
res = 0
7+
8+
left_gaps = [0] * n
9+
left_gaps[0] = startTime[0]
10+
for meet in range(1, n):
11+
left_gaps[meet] = max(
12+
left_gaps[meet - 1], startTime[meet] - endTime[meet - 1]
13+
)
14+
15+
right_gaps = [0] * n
16+
right_gaps[n - 1] = eventTime - endTime[-1]
17+
for meet in range(n - 2, -1, -1):
18+
right_gaps[meet] = max(
19+
right_gaps[meet + 1], startTime[meet + 1] - endTime[meet]
20+
)
21+
22+
for meet in range(n):
23+
left_gap = (
24+
left_gaps[meet] if meet == 0 else startTime[meet] - endTime[meet - 1]
25+
)
26+
right_gap = (
27+
right_gaps[meet]
28+
if meet == n - 1
29+
else startTime[meet + 1] - endTime[meet]
30+
)
31+
32+
interval = 0
33+
34+
if (
35+
meet != 0
36+
and left_gaps[meet - 1] >= (endTime[meet] - startTime[meet])
37+
or meet != n - 1
38+
and right_gaps[meet + 1] >= (endTime[meet] - startTime[meet])
39+
):
40+
interval = endTime[meet] - startTime[meet]
41+
42+
res = max(res, left_gap + interval + right_gap)
43+
44+
return res

0 commit comments

Comments
 (0)