Skip to content

Commit c141a2b

Browse files
authored
Update 1712-ways-to-split-array-into-three-subarrays.js
1 parent 979d709 commit c141a2b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

1712-ways-to-split-array-into-three-subarrays.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
const waysToSplit = function (nums) {
66
const N = nums.length
77
let ret = 0
8-
const presum = Array(N + 1).fill(0)
8+
const presum = Array(N + 1).fill(0), MOD = 10 ** 9 + 7
99
for (let i = 0; i < N; i++) presum[i + 1] = presum[i] + nums[i]
1010
let avg = (presum[N] / 3 + 1) >> 0
11-
for (let l = 1, r = 2, rr = 2; l < N - 1; l++) {
11+
for (let l = 1, m = 2, r = 2; l < N - 1; l++) {
1212
if (presum[l] > avg) break
13-
while (r < N && presum[l] > presum[r] - presum[l]) r++
14-
r = Math.max(r, l + 1)
15-
if (r > rr) rr = r
16-
while (rr < N && presum[N] - presum[rr] >= presum[rr] - presum[l]) rr++
17-
ret += rr - r
18-
if (ret >= 1000000007) ret -= 1000000007
13+
while (m < N && presum[l] > presum[m] - presum[l]) m++
14+
m = Math.max(m, l + 1)
15+
if (m > r) r = m
16+
while (r < N && presum[N] - presum[r] >= presum[r] - presum[l]) r++
17+
ret += r - m
18+
if (ret >= MOD) ret -= MOD
1919
}
2020
return ret
2121
}

0 commit comments

Comments
 (0)