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 211221122323|[ Find Minimum Time to Finish All Jobs II] ( ./solutions/2323-find-minimum-time-to-finish-all-jobs-ii.js ) |Medium|
211321132325|[ Decode the Message] ( ./solutions/2325-decode-the-message.js ) |Easy|
211421142326|[ 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|
211521162328|[ Number of Increasing Paths in a Grid] ( ./solutions/2328-number-of-increasing-paths-in-a-grid.js ) |Hard|
211621172330|[ Valid Palindrome IV] ( ./solutions/2330-valid-palindrome-iv.js ) |Medium|
211721182331|[ 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