Skip to content

Commit b2df826

Browse files
authored
Update 1986-minimum-number-of-work-sessions-to-finish-the-tasks.js
1 parent d29635f commit b2df826

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

1986-minimum-number-of-work-sessions-to-finish-the-tasks.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,35 @@ const minSessions = function(tasks, sessionTime) {
2828
return dp[mask][consumed] = result;
2929
}
3030
};
31+
32+
// another
33+
34+
/**
35+
* @param {number[]} tasks
36+
* @param {number} sessionTime
37+
* @return {number}
38+
*/
39+
function minSessions(tasks, sessionTime) {
40+
const n = tasks.length
41+
const memo = Array.from({ length: 1 << n }, () => Array(15))
42+
return helper((1 << n) - 1, 0)
43+
44+
function helper(mask, remain) {
45+
if(mask === 0) return 0
46+
if(memo[mask][remain] != null) return memo[mask][remain]
47+
let res = n
48+
49+
for(let i = 0; i < n; i++) {
50+
if((1 << i) & mask) {
51+
const newMask = mask & (~(1 << i))
52+
if(tasks[i] <= remain) {
53+
res = Math.min(res, helper(newMask, remain - tasks[i]))
54+
} else {
55+
res = Math.min(res, helper(newMask, sessionTime - tasks[i]) + 1)
56+
}
57+
}
58+
}
59+
60+
return memo[mask][remain] = res
61+
}
62+
}

0 commit comments

Comments
 (0)