Skip to content

Commit 2168220

Browse files
authored
Update 907-sum-of-subarray-minimums.js
1 parent 521b1b6 commit 2168220

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

907-sum-of-subarray-minimums.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,36 @@
22
* @param {number[]} A
33
* @return {number}
44
*/
5-
const sumSubarrayMins = function(A) {
6-
let n = A.length;
7-
let s1 = [];
8-
let s2 = [];
9-
let left = new Array(n);
10-
let right = new Array(n);
5+
const sumSubarrayMins = function (A) {
6+
const n = A.length
7+
const s1 = []
8+
const s2 = []
9+
const left = new Array(n)
10+
const right = new Array(n)
1111

1212
for (let i = 0; i < n; i++) {
13-
let count = 1;
13+
let count = 1
1414
while (s1.length && s1[s1.length - 1][0] > A[i]) {
15-
count += s1.pop()[1];
15+
count += s1.pop()[1]
1616
}
17-
left[i] = count;
18-
s1.push([A[i], count]);
17+
left[i] = count
18+
s1.push([A[i], count])
1919
}
2020

2121
for (let i = n - 1; i >= 0; i--) {
22-
let count = 1;
22+
let count = 1
23+
// use ">=" to deal with duplicate elements
2324
while (s2.length && s2[s2.length - 1][0] >= A[i]) {
24-
count += s2.pop()[1];
25+
count += s2.pop()[1]
2526
}
26-
right[i] = count;
27-
s2.push([A[i], count]);
27+
right[i] = count
28+
s2.push([A[i], count])
2829
}
2930

30-
let res = 0;
31-
let mod = 1e9 + 7;
31+
let res = 0
32+
const mod = 1e9 + 7
3233
for (let i = 0; i < n; i++) {
33-
res = (res + left[i] * A[i] * right[i]) % mod;
34+
res = (res + left[i] * A[i] * right[i]) % mod
3435
}
35-
return res;
36-
};
36+
return res
37+
}

0 commit comments

Comments
 (0)