python—函数,它接受一个整数k,检查一个整数列表是否列出了l,返回l中整数列表数的计数,其和为k

70gysomp  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(254)

例如: sumToK(10,[[1,2],[1,2,3,4],[5,5,0],[8,2,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

ig9co6j1

ig9co6j11#

正如您在文章中所要求的,使用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, 2, 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, [[1, 2], [1, 2, 3, 4], [5, 5, 0], [8, 2, 3], [-15, 25]])
print(ans) # outputs 3

更新
我添加了一个递归解决方案,但老实说,这不是您想要递归解决的任务类型。递归需要o(n)空间,这在那里是不必要的。

def sumTotal(k, l, index = 0):
  if index == len(l):
    return 0
  else:
    return sumTotal(k, l, index + 1) + (1 if sum(l[index]) == k else 0)

ans = sumTotal(10, [[1, 2], [1, 2, 3, 4], [5, 5, 0], [8, 2, 3], [-15, 25]])
print(ans) # outputs 3

相关问题