Partition Array Into Three Parts With Equal Sum

EasyArrayGreedy

Solution

export function canThreePartsEqualSum(arr: number[]): boolean {
  const total = arr.reduce((acc, curr) => acc + curr, 0);
  if (total % 3 !== 0) {
    return false;
  }
  const average = total / 3;
 
  let currentSum = 0;
  let partCount = 0;
  for (const num of arr) {
    currentSum += num;
    if (currentSum === average) {
      currentSum = 0;
      partCount += 1;
    }
  }
 
  return 3 <= partCount;
}