Skip to content

Commit 0644272

Browse files
authored
Update minimum-difficulty-of-a-job-schedule.py
1 parent c0fb5f2 commit 0644272

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed
Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
# Time: O(n^2 * d)
2-
# Space: O(n^2)
1+
# Time: O(d * n^2)
2+
# Space: O(d * n)
33

44
class Solution(object):
55
def minDifficulty(self, jobDifficulty, d):
@@ -10,17 +10,15 @@ def minDifficulty(self, jobDifficulty, d):
1010
"""
1111
if len(jobDifficulty) < d:
1212
return -1;
13-
14-
max_in_range = [[0]*len(jobDifficulty) for _ in xrange(len(jobDifficulty))]
15-
for i in xrange(len(jobDifficulty)):
16-
max_in_range[i][i] = jobDifficulty[i]
17-
for j in xrange(i+1, len(jobDifficulty)):
18-
max_in_range[i][j] = max(max_in_range[i][j-1], jobDifficulty[j])
1913

20-
dp = [[float("inf")]*d for _ in xrange(len(jobDifficulty))]
21-
for i in xrange(len(jobDifficulty)):
22-
dp[i][0] = max_in_range[0][i]
23-
for j in xrange(1, d):
24-
for k in reversed(xrange(i)):
25-
dp[i][j] = min(dp[i][j], dp[k][j-1] + max_in_range[k+1][i])
26-
return dp[len(jobDifficulty)-1][d-1]
14+
dp = [[float("inf")]*len(jobDifficulty) for _ in xrange(d)]
15+
dp[0][0] = jobDifficulty[0]
16+
for i in xrange(1, len(jobDifficulty)):
17+
dp[0][i] = max(dp[0][i-1], jobDifficulty[i])
18+
for i in xrange(1, d):
19+
for j in xrange(i, len(jobDifficulty)):
20+
curr_max = jobDifficulty[j]
21+
for k in reversed(xrange(i, j+1)):
22+
curr_max = max(curr_max, jobDifficulty[k])
23+
dp[i][j] = min(dp[i][j], dp[i-1][k-1] + curr_max)
24+
return dp[d-1][len(jobDifficulty)-1]

0 commit comments

Comments
 (0)