File tree 3 files changed +132
-2
lines changed
solution/3400-3499/3440.Reschedule Meetings for Maximum Free Time II
3 files changed +132
-2
lines changed Original file line number Diff line number Diff line change @@ -111,7 +111,50 @@ tags:
111
111
#### Python3
112
112
113
113
``` 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
115
158
```
116
159
117
160
#### Java
Original file line number Diff line number Diff line change @@ -109,7 +109,50 @@ tags:
109
109
#### Python3
110
110
111
111
``` 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
113
156
```
114
157
115
158
#### 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