使用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