Minimum Number of Work Sessions to Finish the Tasks LeetCode solution in JavaScript

1
/**
2
* @param {number[]} tasks
3
* @param {number} sessionTime
4
* @return {number}
5
*/
6
var minSessions = function (tasks, sessionTime) {
7
const n = tasks.length;
8
const dp = Array(1 << n)
9
.fill()
10
.map(() => Array(16).fill(-1));
11

12
const solve = (mask, time) => {
13
if (mask === (1 << n) - 1) {
14
return 1;
15
}
16

17
if (dp[mask][time] !== -1) {
18
return dp[mask][time];
19
}
20

21
let min = Infinity;
22
for (let i = 0; i < n; ++i) {
23
if (mask & (1 << i)) {
24
continue;
25
}
26

27
if (time >= tasks[i]) {
28
min = Math.min(min, solve(mask | (1 << i), time - tasks[i]));
29
} else {
30
min = Math.min(min, 1 + solve(mask | (1 << i), sessionTime - tasks[i]));
31
}
32
}
33

34
dp[mask][time] = min;
35
return min;
36
};
37

38
return solve(0, sessionTime);
39
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0