将数组分成和相等的三个部分
1.判断数组能否分成和相等的三个部分
2.找到数组中的两个分界点
步骤一:
求出数组的和,是否可以被3整除,若不能,返回False;反之,进行下一步。
步骤二:
求出两个不相等的索引 i 和 j ,且(j > i),将数组分为三个部分(注意第二个索引不能是数组末尾,即j != len(A)-1)。因为i 和 j将数组分为相等的三部分,那么每一个部分的累加和为数组的和除以3,即sum(A) / 3.
只需扫描数组,求累加和,判断当前值是否为sum(A)/3 * k,其中k为第i个索引。
```python
cnt = 0 #数组累加和,初始值为0
for i in A:
cnt += i
if cnt % 3 != 0: #如果不能被3整除,返回False
return False
cnt /= 3 #此为每一个单独部分的和
ans = 0 #用来计算累加和
k = 1 #得到已求得的索引个数
i = 0
while i < len(A):
ans += A[i]
if ans == k * cnt:
k += 1
if k == 3 and i < len(A)-1: #当k==3时,意为找到第二个索引,且当前索引小于数组末尾,return True
return True
i += 1
return False