Minimum Difficulty of a Job Schedule LeetCode solution in Python

1
class Solution:
2
def minDifficulty(self, jobDifficulty, days):
3
length = len(jobDifficulty)
4
if days > length:
5
return -1
6

7
min_difficulties = [[float("inf")] * length for _ in range(days)]
8

9
max_diff = 0
10
i = 0
11
while i <= length - days:
12
max_diff = max(max_diff, jobDifficulty[i])
13
min_difficulties[0][i] = max_diff
14
i += 1
15

16
current_day = 1
17
while current_day < days:
18
to = current_day
19
while to <= length - days + current_day:
20
current_job_difficulty = jobDifficulty[to]
21
result = float("inf")
22
j = to - 1
23
while j >= current_day - 1:
24
result = min(
25
result,
26
min_difficulties[current_day - 1][j] + current_job_difficulty,
27
)
28
current_job_difficulty = max(
29
current_job_difficulty, jobDifficulty[j]
30
)
31
j -= 1
32
min_difficulties[current_day][to] = result
33
to += 1
34
current_day += 1
35

36
return min_difficulties[days - 1][length - 1]

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0