Go•partition-array-into-three-parts-with-equal-sum/solution.go
package main
func canThreePartsEqualSum(arr []int) bool {
total := 0
for _, value := range arr {
total += value
}
if total%3 != 0 {
return false
}
target, current, parts := total/3, 0, 0
for index := 0; index < len(arr)-1; index++ {
current += arr[index]
if current == target {
parts++
current = 0
if parts == 2 {
return true
}
}
}
return false
}
Python•partition-array-into-three-parts-with-equal-sum/solution.py
class Solution:
def canThreePartsEqualSum(self, arr: list[int]) -> bool:
total = sum(arr)
if total % class="syntax-number">3: return False
target, current, parts = total class=class="syntax-string">"syntax-comment">// class="syntax-number">3, class="syntax-number">0, class="syntax-number">0
for value in arr[:-class="syntax-number">1]:
current += value
if current == target:
parts, current = parts + class="syntax-number">1, class="syntax-number">0
if parts == class="syntax-number">2: return True
return False
TypeScript•partition-array-into-three-parts-with-equal-sum/solution.ts
function canThreePartsEqualSum(arr: number[]): boolean {
const total = arr.reduce((sum, value) => sum + value, class="syntax-number">0); if (total % class="syntax-number">3 !== class="syntax-number">0) return false;
const target = total / class="syntax-number">3; let parts = class="syntax-number">0; let sum = class="syntax-number">0;
for (let index = class="syntax-number">0; index < arr.length - class="syntax-number">1; index += class="syntax-number">1) { sum += arr[index]; if (sum === target) { parts += class="syntax-number">1; sum = class="syntax-number">0; if (parts === class="syntax-number">2) return true; } }
return false;
}