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
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
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code