如何解决计算将数组的所有元素拆分为K个连续相等部分的方法数量
问题说明
您将获得一个包含B
整数的一维整数数组A
。
计算将数组的所有元素分成3个连续部分的方式数量,以使每个部分中的元素总和相同。
示例输入:
输入1
A = 5
B = [1,2,3,3]
输出1:2
没有2种分区方法:
-
(1,2)+(3)+(0,3)
。 -
(1,2)+(3,0)+(3)
。
输入2
A = 4
B = [0,1,-1,0]
输出2:1
只有一种方法可以进行分区-
-
(0)+(-1,1)+(0)
。
def solve(A,B):
total = sum(B)
if total % 3 == 0:
target = total // 3
else:
return 0
ans = 0
f = 0
s = 0
for i in range(A - 1):
s += B[i]
if s == 2 * target:
ans += f
if s == target:
f += 1
return ans
所以我的问题是上面的代码能够解决3个连续的部分,但是如果我想解决K
的问题,其中K
可以是1<=k<=A
,其中{{1 }}是给定数组A
的长度。
我尝试了滑动窗口方法,但是没有通过上述问题的所有测试用例。 k个零件有问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。