Skip to content

Commit 6b4f4cf

Browse files
authored
Create 3351-sum-of-good-subsequences.js
1 parent 35e3bff commit 6b4f4cf

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

3351-sum-of-good-subsequences.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var sumOfGoodSubsequences = function (nums) {
6+
const mod = 1000000007n;
7+
const MAX = 100005;
8+
const sum = new Array(MAX).fill(0n);
9+
const cnt = new Array(MAX).fill(0n);
10+
11+
for (let i = nums.length - 1; i >= 0; i--) {
12+
const v = nums[i];
13+
cnt[v]++;
14+
15+
const tmp = 1n + cnt[v + 1] + (cnt[v - 1] || 0n);
16+
cnt[v] += cnt[v + 1];
17+
cnt[v] += cnt[v - 1] || 0n;
18+
19+
sum[v] += BigInt(v) * tmp;
20+
21+
sum[v] += sum[v + 1];
22+
sum[v] += sum[v - 1] || 0n;
23+
24+
cnt[v] %= mod;
25+
sum[v] %= mod;
26+
}
27+
28+
return Number(sum.reduce((a, b) => (a + b) % mod, 0n));
29+
}

0 commit comments

Comments
 (0)