File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change 2112
2112
2323|[ Find Minimum Time to Finish All Jobs II] ( ./solutions/2323-find-minimum-time-to-finish-all-jobs-ii.js ) |Medium|
2113
2113
2325|[ Decode the Message] ( ./solutions/2325-decode-the-message.js ) |Easy|
2114
2114
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|
2115
2116
2328|[ Number of Increasing Paths in a Grid] ( ./solutions/2328-number-of-increasing-paths-in-a-grid.js ) |Hard|
2116
2117
2330|[ Valid Palindrome IV] ( ./solutions/2330-valid-palindrome-iv.js ) |Medium|
2117
2118
2331|[ Evaluate Boolean Binary Tree] ( ./solutions/2331-evaluate-boolean-binary-tree.js ) |Easy|
Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments