Number of Distinct Roll Sequences LeetCode solution in JavaScript

1
var distinctSequences = function (n) {
2
// 3D DP [n + 1][7][7] => rollIdx, prev, prevPrev
3
const dp = Array.from({ length: n + 1 }, () => {
4
return new Array(7).fill(0).map(() => new Array(7).fill(0));
5
});
6

7
const gcd = (a, b) => {
8
if (a < b) [b, a] = [a, b];
9
while (b) {
10
let temp = b;
11
b = a % b;
12
a = temp;
13
}
14
return a;
15
};
16

17
const ds = (n, p = 0, pp = 0) => {
18
if (n == 0) return 1;
19
if (dp[n][p][pp] == 0) {
20
for (let i = 1; i <= 6; i++) {
21
if (i != p && i != pp && (p == 0 || gcd(p, i) == 1)) {
22
dp[n][p][pp] = (dp[n][p][pp] + ds(n - 1, i, p)) % 1000000007;
23
}
24
}
25
}
26
return dp[n][p][pp];
27
};
28
return ds(n);
29
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0