Minimum Difficulty of a Job Schedule - Problem

You want to schedule a list of jobs in d days. Jobs are dependent (i.e., to work on the i-th job, you have to finish all jobs j where 0 <= j < i).

You have to finish at least one task every day. The difficulty of a job schedule is the sum of difficulties of each day of the d days. The difficulty of a day is the maximum difficulty of a job done on that day.

Given an integer array jobDifficulty and an integer d, return the minimum difficulty of a job schedule. If you cannot find a schedule for the jobs, return -1.

Input & Output

Example 1 — Basic Case
$ Input: jobDifficulty = [6,5,4,3,2,1], d = 2
Output: 7
💡 Note: Optimal schedule: Day 1 = [6,5,4,3,2] (max=6), Day 2 = [1] (max=1). Total difficulty = 6 + 1 = 7.
Example 2 — Single Day
$ Input: jobDifficulty = [9,9,9], d = 1
Output: 9
💡 Note: All jobs must be done in 1 day. The difficulty is the maximum job difficulty = 9.
Example 3 — Impossible Case
$ Input: jobDifficulty = [1,1,1], d = 4
Output: -1
💡 Note: Cannot schedule 3 jobs across 4 days since each day needs at least one job.

Constraints

  • 1 ≤ jobDifficulty.length ≤ 300
  • 0 ≤ jobDifficulty[i] ≤ 1000
  • 1 ≤ d ≤ 10

Visualization

Tap to expand
Minimum Difficulty of a Job Schedule INPUT jobDifficulty Array 6 5 4 3 2 1 0 1 2 3 4 5 Number of Days d = 2 Constraints: - At least 1 job per day - Jobs are dependent - Sequential order n=6 >= d=2 : Valid ALGORITHM (DP) 1 Define State dp[i][j] = min difficulty for jobs 0..i in j days 2 Recurrence dp[i][j] = min(dp[k][j-1] + max(k+1..i)) 3 Try Partitions Day 1: [6] or [6,5]... Day 2: remaining jobs 4 Find Minimum Return dp[n-1][d] Best Partition Found: Day 1 [6] max = 6 Day 2 [5,4,3,2,1] max = 5 + Total: 6 + 5 = 7 (Optimal split) FINAL RESULT Minimum Schedule Difficulty 7 Schedule Breakdown: Day 1: Job 0 (diff: 6) 6 max = 6 Day 2: Jobs 1-5 5 4 3 2 1 max=5 Output: 7 [OK] Any other split gives higher total difficulty Key Insight: The DP approach tries all valid ways to partition n jobs into d days. For each partition point, we calculate the max difficulty of the current day and add it to the optimal solution for remaining days. Time Complexity: O(n^2 * d) | Space: O(n * d). Return -1 if n less than d (impossible schedule). TutorialsPoint - Minimum Difficulty of a Job Schedule | Dynamic Programming Approach
Asked in
Google 15 Amazon 12 Microsoft 8 Facebook 6
85.0K Views
Medium Frequency
~35 min Avg. Time
2.2K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen