使用Python查找总和等于目标的最大非重叠子数组数的程序

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

因此,如果输入类似于 nums = [3,2,4,5,2,1,5] target = 6,那么输出将为 2,因为有两个子数组 [2,4] 和 [1,5]其总和与 6 相同。

为了解决这个问题,我们将按照以下步骤操作 -

  • t := 具有单个元素 0 的新集合

  • 温度:= 0

  • 答案:= 0

  • 对于 nums 中的每个 i,做

    • 将温度插入 t

    • 答案:= 答案 + 1

    • t := 具有单元素温度的新集合

    • 温度 := 温度 + 我

    • 上一个 := 温度 - 目标

    • 如果 prev 在 t 中,则

    • 否则,

    • 返回答案

    让我们看看以下实现以获得更好的理解 -

    示例

    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查找总和等于目标的最大非重叠子数组数的程序 的全部内容, 来源链接: utcz.com/z/317370.html

    回到顶部