如何解决函数接受一个整数 k,检查整数列表是否列出 l,返回 l 中整数列表的数量,总和为 k
例如:sumToK(10,[[1,2],[1,2,3,4],[5,5,0],[8,3],[-15,25]])
返回 3
因为给定列表中的内部 5 个列表中的 3 个总和正好为 10。我可以使用 sum 函数,以及其他函数,例如 max、min、len .我需要使用使用 while 循环的代码和使用 for 循环的代码来执行此操作。
到目前为止,我在 for 循环中有这个,但在 while 循环中丢失了:
def sumTotal(k,l):
count = 0
for x in l:
count += x
return count
我的问题是检查多个列表并计算有多少加起来为 k
解决方法
按照您在帖子中的要求使用 while 循环版本
修改初始列表:
def sumTotal(k,l):
ans = 0
while l:
curr = l.pop()
if sum(curr) == k:
ans += 1
return ans
ans = sumTotal(10,[[1,2],[1,2,3,4],[5,5,0],[8,3],[-15,25]])
print(ans) # outputs 3
不修改初始列表:
def sumTotal(k,l):
ans = 0
idx = 0
while idx < len(l):
if sum(l[idx]) == k:
ans += 1
idx += 1
return ans
ans = sumTotal(10,25]])
print(ans) # outputs 3
更新
我添加了一个递归解决方案,但老实说这不是您想要递归解决的任务类型。递归需要 O(n) 空间,这在那里是不必要的。
def sumTotal(k,l,index = 0):
if index == len(l):
return 0
else:
return sumTotal(k,index + 1) + (1 if sum(l[index]) == k else 0)
ans = sumTotal(10,25]])
print(ans) # outputs 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。