【问题标题】:what is the space complexity of this program这个程序的空间复杂度是多少
【发布时间】:2021-03-29 04:52:24
【问题描述】:
def howsum(target, array):


    if target == 0:
        return []

    if target<0:
        return None

    for num in array:

        remainder = target-num

        sol = howsum(remainder, array)

        if sol!=None:
            return [num]+sol


    return None

print(howsum(8,[5,3,2]))
print(howsum(7,[3,2]))
print(howsum(7,[2,4]))
print(howsum(7,[5,3,4,7]))

我在一个关于动态编程的视频中看到了这段代码。我对此代码的空间复杂性有疑问。在那个视频中提到程序的空间复杂度是 O(m),因为它调用了 m 次程序(递归)。但我怀疑每个函数调用在最坏的情况下都会返回一个大小为 m 的数组,不。在最坏的情况下,函数调用的数量将是 m,如果是这种情况,每个函数调用都应该使用大小为 m 的数组,那么空间复杂度将是 O(m) 而不是 O(m^2)。

请任何人帮助我。我是这个编程领域的新手。

【问题讨论】:

    标签: python dynamic-programming


    【解决方案1】:

    在我看来,最差的空间复杂度将是O(target)。所以视频实际上是关于O(m),如果它意味着m = target。简单的例子,我想实际最坏的情况是howsum(N, [1])。您将需要调用N 来计算结果,并返回大小为N 的数组。每次调用只会向该数组添加 1 个元素。当然,我假设array 是一个整数数组,其不同的值高于0

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 2021-06-14
      • 2022-09-22
      • 1970-01-01
      • 2020-05-03
      • 2020-03-10
      • 2018-07-23
      • 1970-01-01
      相关资源
      最近更新 更多