Skip to content

Commit fde3f16

Browse files
authoredApr 7, 2023
Update 1723-find-minimum-time-to-finish-all-jobs.js
1 parent 406a754 commit fde3f16

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
 

‎1723-find-minimum-time-to-finish-all-jobs.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
/**
2+
* @param {number[]} jobs
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const minimumTimeRequired = function(jobs, k) {
7+
const n = jobs.length
8+
const limit = 1 << n
9+
const sum = Array(limit).fill(0)
10+
const { min, max } = Math
11+
12+
for(let mask = 0; mask < limit; mask++) {
13+
for(let i = 0; i < n; i++) {
14+
if((mask & (1 << i))) sum[mask] += jobs[i]
15+
}
16+
}
17+
18+
const dp = Array.from({ length: k + 1 }, () => Array(limit).fill(0))
19+
for(let i = 0; i < limit; i++) dp[1][i] = sum[i]
20+
21+
for(let i = 2; i <= k; i++) {
22+
for(let mask = 0; mask < limit; mask++) {
23+
dp[i][mask] = dp[i - 1][mask]
24+
for(let sub = mask; sub; sub = (sub - 1) & mask) {
25+
dp[i][mask] = min(dp[i][mask], max(dp[i - 1][mask - sub], sum[sub]))
26+
}
27+
}
28+
}
29+
30+
return dp[k][limit - 1]
31+
};
32+
33+
// another
34+
135
/**
236
* @param {number[]} jobs
337
* @param {number} k

0 commit comments

Comments
 (0)
Please sign in to comment.