使用Python编写的查找总和为目标的最大不重叠子数组数量的程序

使用Python编写的查找总和为目标的最大不重叠子数组数量的程序

假设我们有一个数组nums和另一个值target。现在,我们必须找到最大数量的非空不重叠的子数组,使得每个不同子数组中的值的总和都等于目标。

因此,如果输入为nums = [3,2,4,5,2,1,5],target = 6,则输出将为2,因为有两个子数组[2,4]和[1,5],它们的总和与6相同。

为了解决这个问题,我们将遵循以下步骤-

  • t:一个只包含0个元素的新集合

  • temp:0

  • ans:0

  • 对于nums中的每个i,做以下操作

    • temp:temp + i

    • prev:temp – target

    • 如果prev在t中,则

      • ans:ans + 1

      • t:一个只包含temp的新集合

    • 否则,

      • 将temp插入t中
  • 返回ans

以下是更好地理解该算法的实现-

更多Python相关文章,请阅读:Python 教程

例子

def solve(nums,target):
    t = set([0])
    temp = 0
    ans=0
    for i in nums:
        temp += i
        prev = temp-target
        if prev in t:
            ans += 1
            t = set([temp])
        else:
            t.add(temp)
    return ans
nums = [3,2,4,5,2,1,5]
target = 6
print(solve(nums,target))

输入

“poput”、“vwput”、9

输出

2

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程