Split Array With Equal Sum(四段和相等的切分点)
题目描述:
给定一个长度为n的数组;要求找到3个切分点i,j,k满足如下要求:
- 0 < i, i + 1 < j, j + 1 < k < n - 1;
- sum[0, i - 1] = sum[i + 1, j - 1] = sum[j + 1, k - 1] = sum[k + 1, n - 1]
例子:
输入时[1,2,1,2,1,2,1]的符合题意的切分点是[1,3,5]
解题思路:
首先为了计算切分的段落和,我们可以构建一个累加和数组,其中sum[i]代表数组[0,i]的数据和,这样可以计算任意段落的和了;然后我们可以遍历i,j,k不同的位置用来判断是否满足条件即可。需要注意的点有因为数组中可以有负数,所以不能根据累加和肯定递增,如果当前位置不满足条件后面肯定不满足这个想法来剪枝;另外测试用例中包含了大量的0;对于计算累加和的时间消耗太多;所以需要针对这个情况做累加和计算的改进。
代码如下:
|
|