Number of People Aware of a Secret LeetCode solution in JavaScript

1
/**
2
* @param {number} n
3
* @param {number} delay
4
* @param {number} forget
5
* @return {number}
6
*/
7
var peopleAwareOfSecret = function (n, delay, forget) {
8
const dp = new Array(n + 1).fill(0);
9
let numberOfPeopleSharingSecret = 0;
10
let totalNumberOfPeopleWithSecret = 0;
11
const MOD = 1000000007n;
12

13
dp[1] = 1; // as on day one only one person knows the secret
14

15
for (let i = 2; i <= n; i++) {
16
const numberOfNewPeopleSharingSecret = dp[Math.max(i - delay, 0)];
17
const numberOfPeopleForgettingSecret = dp[Math.max(i - forget, 0)];
18
numberOfPeopleSharingSecret =
19
BigInt(numberOfPeopleSharingSecret) +
20
((BigInt(numberOfNewPeopleSharingSecret) -
21
BigInt(numberOfPeopleForgettingSecret) +
22
BigInt(MOD)) %
23
BigInt(MOD));
24

25
dp[i] = numberOfPeopleSharingSecret;
26
}
27

28
for (let i = n - forget + 1; i <= n; i++) {
29
totalNumberOfPeopleWithSecret =
30
(BigInt(totalNumberOfPeopleWithSecret) + BigInt(dp[i])) % BigInt(MOD);
31
}
32

33
return totalNumberOfPeopleWithSecret;
34
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0