Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public int minDifficulty(int[] jobDifficulty, int d) {
- int N = jobDifficulty.length;
- if (N < d) return -1;
- int[][] dp = new int[d][N];
- dp[0][0] = jobDifficulty[0];
- for (int i = 1; i < N; ++i) {
- dp[0][i] = Math.max(dp[0][i-1], jobDifficulty[i]);
- }
- for (int k = 1; k < d; ++k) {
- for (int j = N-1; j >= k; --j){
- int max = Integer.MIN_VALUE;
- int min = Integer.MAX_VALUE;
- for (int i = j - 1; i >= k - 1; --i) {
- max = Math.max(max, jobDifficulty[i+1]);
- min = Math.min(min, dp[k - 1][i] + max);
- }
- dp[k][j] = min;
- }
- }
- return dp[d-1][N-1];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement