Skip to content

Commit 217e147

Browse files
committed
Add solution #2327
1 parent cfc9ecb commit 217e147

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2112,6 +2112,7 @@
21122112
2323|[Find Minimum Time to Finish All Jobs II](./solutions/2323-find-minimum-time-to-finish-all-jobs-ii.js)|Medium|
21132113
2325|[Decode the Message](./solutions/2325-decode-the-message.js)|Easy|
21142114
2326|[Spiral Matrix IV](./solutions/2326-spiral-matrix-iv.js)|Medium|
2115+
2327|[Number of People Aware of a Secret](./solutions/2327-number-of-people-aware-of-a-secret.js)|Medium|
21152116
2328|[Number of Increasing Paths in a Grid](./solutions/2328-number-of-increasing-paths-in-a-grid.js)|Hard|
21162117
2330|[Valid Palindrome IV](./solutions/2330-valid-palindrome-iv.js)|Medium|
21172118
2331|[Evaluate Boolean Binary Tree](./solutions/2331-evaluate-boolean-binary-tree.js)|Easy|
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* 2327. Number of People Aware of a Secret
3+
* https://leetcode.com/problems/number-of-people-aware-of-a-secret/
4+
* Difficulty: Medium
5+
*
6+
* On day 1, one person discovers a secret.
7+
*
8+
* You are given an integer delay, which means that each person will share the secret with a new
9+
* person every day, starting from delay days after discovering the secret. You are also given
10+
* an integer forget, which means that each person will forget the secret forget days after
11+
* discovering it. A person cannot share the secret on the same day they forgot it, or on any
12+
* day afterwards.
13+
*
14+
* Given an integer n, return the number of people who know the secret at the end of day n.
15+
* Since the answer may be very large, return it modulo 109 + 7.
16+
*/
17+
18+
/**
19+
* @param {number} n
20+
* @param {number} delay
21+
* @param {number} forget
22+
* @return {number}
23+
*/
24+
var peopleAwareOfSecret = function(n, delay, forget) {
25+
const MOD = 1e9 + 7;
26+
const dp = new Array(n + 1).fill(0);
27+
dp[1] = 1;
28+
29+
for (let day = 1; day <= n; day++) {
30+
if (dp[day] === 0) continue;
31+
32+
for (let shareDay = day + delay; shareDay < day + forget && shareDay <= n; shareDay++) {
33+
dp[shareDay] = (dp[shareDay] + dp[day]) % MOD;
34+
}
35+
}
36+
37+
let result = 0;
38+
for (let day = Math.max(1, n - forget + 1); day <= n; day++) {
39+
result = (result + dp[day]) % MOD;
40+
}
41+
42+
return result;
43+
};

0 commit comments

Comments
 (0)