LeetCode #1013. Partition Array Into Three Parts With Equal Sum
题目
1013. Partition Array Into Three Parts With Equal Sum
解题方法
首先计算数组总和,如果是3的倍数则继续计算平均值 avg = sum / 3,否则直接返回False。然后遍历数组做累加,累加值达到avg时重置,并计parts+1,表示找到一个部分。执行过程中当parts==2时,如果此时i没有到达结尾,则返回True,否则返回False,因为如果有剩余,那么它的和一定等于avg。
时间复杂度:O(n)
空间复杂度:O(1)
代码
class Solution:
def canThreePartsEqualSum(self, A: List[int]) -> bool:
avg = sum(A)
if avg % 3:
return False
avg //= 3
parts = 0
tempsum = i = 0
while i < len(A):
tempsum += A[i]
if tempsum == avg:
parts += 1
tempsum = 0
if parts == 2:
if i == len(A) - 1:
return False
else:
return True
i += 1

浙公网安备 33010602011771号