1
/**
2
* @param {number} n
3
* @return {number}
4
*/
5
var checkRecord = function (n) {
6
/**
7
* P(n) = A(n - 1) + P(n - 1) + L(n - 1), n ≥ 2.
8
* L(n) = A(n - 1) + P(n - 1) + A(n - 2) + P(n - 2), n ≥ 3.
9
* A(n) = A(n - 1) + A(n - 2) + A(n - 3), n ≥ 4.
10
*/
11
const m = 1000000007;
12
const P = Array(n);
13
const A = Array(n);
14
const L = Array(n);
15
A[0] = 1;
16
L[0] = 1;
17
P[0] = 1;
18
A[1] = 2;
19
A[2] = 4;
20
L[1] = 3;
21
for (let i = 1; i < n; i++) {
22
P[i] = (A[i - 1] + L[i - 1] + P[i - 1]) % m;
23
if (i >= 3) A[i] = (A[i - 1] + A[i - 2] + A[i - 3]) % m;
24
if (i >= 2) L[i] = (A[i - 1] + P[i - 1] + A[i - 2] + P[i - 2]) % m;
25
}
26
return (P[n - 1] + A[n - 1] + L[n - 1]) % m;
27
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0