File tree Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Expand file tree Collapse file tree 1 file changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Solution by Sergey Leschev
2
+ // 3351. Sum of Good Subsequences
3
+ // DP
4
+
5
+ function sumOfGoodSubsequences ( nums : number [ ] ) : number {
6
+ const MOD = 1000000007
7
+
8
+ const count : Map < number , number > = new Map ( )
9
+ const sum : Map < number , number > = new Map ( )
10
+
11
+ for ( const num of nums ) {
12
+ const cntPrev = count . get ( num - 1 ) || 0
13
+ const cntCurr = count . get ( num ) || 0
14
+ const cntNext = count . get ( num + 1 ) || 0
15
+
16
+ const sumPrev = sum . get ( num - 1 ) || 0
17
+ const sumCurr = sum . get ( num ) || 0
18
+ const sumNext = sum . get ( num + 1 ) || 0
19
+
20
+ count . set ( num , ( cntPrev + cntNext + cntCurr + 1 ) % MOD )
21
+
22
+ const newSum = ( sumPrev + sumNext + sumCurr + num * ( cntPrev + cntNext + 1 ) ) % MOD
23
+ sum . set ( num , newSum )
24
+ }
25
+
26
+ let result = 0
27
+ for ( const value of sum . values ( ) ) {
28
+ result = ( result + value ) % MOD
29
+ }
30
+
31
+ return result
32
+ }
You can’t perform that action at this time.
0 commit comments