微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

计算将数组的所有元素拆分为K个连续相等部分的方法数量

如何解决计算将数组的所有元素拆分为K个连续相等部分的方法数量

问题说明 您将获得一个包含B整数的一维整数数组A。 计算将数组的所有元素分成3个连续部分的方式数量,以使每个部分中的元素总和相同。

示例输入:

输入1

 A = 5
 B = [1,2,3,3]

输出1:2

没有2种分区方法

  1. (1,2)+(3)+(0,3)
  2. (1,2)+(3,0)+(3)

输入2

A = 4
B = [0,1,-1,0]

输出2:1

只有一种方法可以进行分区-

  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 举报,一经查实,本站将立刻删除。