微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

函数接受一个整数 k,检查整数列表是否列出 l,返回 l 中整数列表的数量,总和为 k

如何解决函数接受一个整数 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] 举报,一经查实,本站将立刻删除。