Skip to content

Commit 245eb39

Browse files
authoredFeb 22, 2025
feat: add python solution to lc problem: No.3440 (#4094)
1 parent c2aa916 commit 245eb39

File tree

3 files changed

+132
-2
lines changed

3 files changed

+132
-2
lines changed
 

‎solution/3400-3499/3440.Reschedule Meetings for Maximum Free Time II/README.md

+44-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,50 @@ tags:
111111
#### Python3
112112

113113
```python
114-
114+
class Solution:
115+
def maxFreeTime(
116+
self, eventTime: int, startTime: List[int], endTime: List[int]
117+
) -> int:
118+
n = len(startTime)
119+
res = 0
120+
121+
left_gaps = [0] * n
122+
left_gaps[0] = startTime[0]
123+
for meet in range(1, n):
124+
left_gaps[meet] = max(
125+
left_gaps[meet - 1], startTime[meet] - endTime[meet - 1]
126+
)
127+
128+
right_gaps = [0] * n
129+
right_gaps[n - 1] = eventTime - endTime[-1]
130+
for meet in range(n - 2, -1, -1):
131+
right_gaps[meet] = max(
132+
right_gaps[meet + 1], startTime[meet + 1] - endTime[meet]
133+
)
134+
135+
for meet in range(n):
136+
left_gap = (
137+
left_gaps[meet] if meet == 0 else startTime[meet] - endTime[meet - 1]
138+
)
139+
right_gap = (
140+
right_gaps[meet]
141+
if meet == n - 1
142+
else startTime[meet + 1] - endTime[meet]
143+
)
144+
145+
interval = 0
146+
147+
if (
148+
meet != 0
149+
and left_gaps[meet - 1] >= (endTime[meet] - startTime[meet])
150+
or meet != n - 1
151+
and right_gaps[meet + 1] >= (endTime[meet] - startTime[meet])
152+
):
153+
interval = endTime[meet] - startTime[meet]
154+
155+
res = max(res, left_gap + interval + right_gap)
156+
157+
return res
115158
```
116159

117160
#### Java

‎solution/3400-3499/3440.Reschedule Meetings for Maximum Free Time II/README_EN.md

+44-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,50 @@ tags:
109109
#### Python3
110110

111111
```python
112-
112+
class Solution:
113+
def maxFreeTime(
114+
self, eventTime: int, startTime: List[int], endTime: List[int]
115+
) -> int:
116+
n = len(startTime)
117+
res = 0
118+
119+
left_gaps = [0] * n
120+
left_gaps[0] = startTime[0]
121+
for meet in range(1, n):
122+
left_gaps[meet] = max(
123+
left_gaps[meet - 1], startTime[meet] - endTime[meet - 1]
124+
)
125+
126+
right_gaps = [0] * n
127+
right_gaps[n - 1] = eventTime - endTime[-1]
128+
for meet in range(n - 2, -1, -1):
129+
right_gaps[meet] = max(
130+
right_gaps[meet + 1], startTime[meet + 1] - endTime[meet]
131+
)
132+
133+
for meet in range(n):
134+
left_gap = (
135+
left_gaps[meet] if meet == 0 else startTime[meet] - endTime[meet - 1]
136+
)
137+
right_gap = (
138+
right_gaps[meet]
139+
if meet == n - 1
140+
else startTime[meet + 1] - endTime[meet]
141+
)
142+
143+
interval = 0
144+
145+
if (
146+
meet != 0
147+
and left_gaps[meet - 1] >= (endTime[meet] - startTime[meet])
148+
or meet != n - 1
149+
and right_gaps[meet + 1] >= (endTime[meet] - startTime[meet])
150+
):
151+
interval = endTime[meet] - startTime[meet]
152+
153+
res = max(res, left_gap + interval + right_gap)
154+
155+
return res
113156
```
114157

115158
#### Java
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)