File tree Expand file tree Collapse file tree 3 files changed +132
-2
lines changed
solution/3400-3499/3440.Reschedule Meetings for Maximum Free Time II Expand file tree Collapse file tree 3 files changed +132
-2
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments