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] (max=6), Day 2 = [2,1] (max=2). 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
Job Scheduling: Minimize Sum of Daily Max DifficultiesJobs: [6, 5, 4, 3, 2, 1] across d=2 days654321Day 1: [6, 5, 4, 3]Max difficulty = 6Day 2: [2, 1]Max difficulty = 1Total Difficulty: 6 + 1 = 7Each day's difficulty = maximum job difficulty on that day
Understanding the Visualization
1
Input
Jobs [6,5,4,3,2,1] must be scheduled across d=2 days
2
Process
Find partition that minimizes sum of daily maximums
3
Output
Optimal schedule gives minimum difficulty of 7
Key Takeaway
🎯 Key Insight: Use DP to efficiently try all valid partitions and minimize the sum of daily maximum difficulties
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