1
var waysToSplit = function (nums) {2
const mod = 1000000007;3
const lastIndex = nums.length - 2;4
const total = nums.reduce((sum, num) => sum + num);13
let numWaysToSplit = 0;15
for (let leftPtr = 0; leftPtr < nums.length; leftPtr++) {16
leftSum += nums[leftPtr];17
midLeftSum -= nums[leftPtr];18
midRightSum -= nums[leftPtr];20
// find the first index that satisfies the middle sum21
// being greater than or equal to the left sum23
midLeftPtr <= lastIndex &&24
(midLeftPtr <= leftPtr || midLeftSum < leftSum)27
midLeftSum += nums[midLeftPtr];30
// find the first index that makes the middle sum greater than the right sum32
midRightPtr <= lastIndex &&33
(midLeftPtr > midRightPtr || midRightSum <= total - midRightSum - leftSum)36
midRightSum += nums[midRightPtr];38
numWaysToSplit = (numWaysToSplit + midRightPtr - midLeftPtr) % mod;40
return numWaysToSplit;