Skip to content

Commit 70f6ffe

Browse files
authored
Create 1712-ways-to-split-array-into-three-subarrays.js
1 parent 67cdad0 commit 70f6ffe

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
const waysToSplit = function (nums) {
6+
const N = nums.length
7+
let ret = 0
8+
const presum = Array(N + 1).fill(0)
9+
for (let i = 0; i < N; i++) presum[i + 1] = presum[i] + nums[i]
10+
let avg = (presum[N] / 3 + 1) >> 0
11+
for (let l = 1, r = 2, rr = 2; l < N - 1; l++) {
12+
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
19+
}
20+
return ret
21+
}

0 commit comments

Comments
 (0)