在Python中查找与给定目标相同的子列表数的程序
假设我们有一个名为nums的数字列表和另一个目标值target,我们必须找到其总和与目标相同的子列表数量。
因此,如果输入为nums = [3, 0, 3],target = 3,则输出将为4,因为我们有这些子列表其总和为3:[3],[3, 0],[0, 3],[3]。
为了解决这个问题,我们将遵循以下步骤:
- temp:一个空映射
- temp [0]:1
- s:0
- ans:0
- 对于范围从0到nums大小的i,执行以下操作
- s:= s + nums [i]
- comp:= s-target
- 如果comp在temp中,则
- ans:= ans + temp [comp]
- temp [s]:= temp [s] +1
- 返回 ans
让我们看以下实现以获得更好的理解:
示例代码
from collections import defaultdict
class Solution:
def solve(self, nums, target):
temp = defaultdict(int)
temp [0] = 1
s = 0
ans = 0
for i in range (len (nums)):
s + = nums [i]
comp = s-target
if comp> = 0 and comp in temp:
ans + = temp [comp]
temp [s] + = 1
return ans
ob = Solution()
nums = [3, 0, 3]
target = 3
print(ob.solve(nums, target))
输入
[3, 0, 3],3
产量
4