Back to all solutions
#1013 - Partition Array Into Three Parts With Equal Sum
Problem Description
Given an array of integers arr, return true if we can partition the array into three non-empty parts with equal sums.
Formally, we can partition the array if we can find indexes i + 1 < j with (arr[0] + arr[1] + ... + arr[i] == arr[i + 1] + arr[i + 2] + ... + arr[j - 1] == arr[j] + arr[j + 1] + ... + arr[arr.length - 1])
Solution
/**
* @param {number[]} arr
* @return {boolean}
*/
var canThreePartsEqualSum = function(arr) {
const totalSum = arr.reduce((sum, num) => sum + num, 0);
if (totalSum % 3 !== 0) return false;
const targetSum = totalSum / 3;
let partsFound = 0;
let currentSum = 0;
for (const num of arr) {
currentSum += num;
if (currentSum === targetSum) {
partsFound++;
currentSum = 0;
}
}
return partsFound >= 3;
};