Dice Roll Simulation LeetCode solution in JavaScript

1
/**
2
* @param {number} n
3
* @param {number[]} rollMax
4
* @return {number}
5
*/
6
var dieSimulator = function (n, rollMax) {
7
let dp = {};
8
let help = (prev, rolls, rollsLeft) => {
9
if (rolls == n) return 1;
10
if (dp[rolls] == undefined) dp[rolls] = {};
11
if (dp[rolls][rollsLeft] == undefined) dp[rolls][rollsLeft] = {};
12
if (dp[rolls][rollsLeft][prev] != undefined)
13
return dp[rolls][rollsLeft][prev];
14
let sum = 0;
15
for (let i = 0; i < rollMax.length; i++) {
16
if (rollsLeft === 0 && prev === i) continue;
17
if (prev === i) sum += help(i, rolls + 1, rollsLeft - 1);
18
else sum += help(i, rolls + 1, rollMax[i] - 1);
19
}
20

21
dp[rolls][rollsLeft][prev] = sum % (10 ** 9 + 7);
22
return dp[rolls][rollsLeft][prev];
23
};
24
return help(null, 0, Infinity);
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0