为什么此算法的空间复杂度为O(n)?

bigbong

这是使用DP方法查找最大连续子序列和的算法。该算法似乎还可以,但是有人提到它具有空间复杂度O(n)。为什么?

在我看来,该算法具有O(1)空间复杂度。我想问的另一件事是,在不使用任何形式的递归的算法中,除了恒定的空间复杂度之外,它是否还有其他可能?

Create arrays S and T each of size n.
    S[0] = A[0];
    T[0] = 0;
    max = S[0];
    max_start = 0, max_end = 0;

    For i going from 1 to n-1:
    // We know that S[i] = max { S[i-1] + A[i], A[i] .
         If ( S[i-1] > 0)
           S[i] = S[i-1] + A[i];
           T[i] = T[i-1];

         Else
           S[i] = A[i];
           T[i] = i;

         If ( S[i] > max)
           max_start = T[i];
           max_end = i;
           max = S[i];
    EndFor.

Output max_start and max_end
templatetypedef

第一行说明了一切:

创建大小为n的数组S和T。

大小为n的数组需要Θ(n)空间,因此您的算法会自动使用Ω(n)空间。查看该算法的其余部分,您可以看到仅使用了O(1)个其他变量,并且没有递归,因此使用的总空间为Θ(n)。

通常,算法的空间复杂度取决于使用的局部变量的数量,还取决于它们的大小。数组,地图,集合,树等占用的空间与它们持有的元素数量成正比,因此,如果仅使用恒定数量的变量,则如果它们最终存储多个变量,则仍然可以使用O(1)以上的空间元素。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么字符串的空间复杂度为O(n)而数字为O(1)?

来自分类Dev

为什么该算法的Big-O复杂度为O(n ^ 2)?

来自分类Dev

为什么这个时间复杂度为O(n)?

来自分类Dev

为什么此函数的圆柱复杂度为12?

来自分类Dev

为什么堆排序的空间复杂度为O(1)?

来自分类Dev

为什么带有链接列表的mergesort空间复杂度O(log(n))?

来自分类Dev

“三个和”问题的空间复杂度-为什么是O(n)?

来自分类Dev

为什么带有链接列表的mergesort空间复杂度O(log(n))?

来自分类Dev

为什么以下c ++代码的时间复杂度为O(n ^ n)?

来自分类Dev

为什么以下代码的时间复杂度为O(n ^ 2)?

来自分类Dev

为什么置换函数的时间复杂度为O(n!)

来自分类Dev

为什么在redis SET中插入的时间复杂度为O(n)?

来自分类Dev

为什么我的 python 代码的时间复杂度为 O(N**2)

来自分类Dev

O(n log n)时间和O(1)空间复杂度与O(n)时间和O(n)空间复杂度的算法

来自分类Dev

给定递归表达式,找到空间复杂度为 O(1) 的算法

来自分类Dev

C ++中strstr()函数的时间复杂度,空间复杂度和算法是什么?

来自分类Dev

为什么此算法为O(N)?

来自分类Dev

递归算法的空间复杂度

来自分类Dev

Ids算法的空间复杂度

来自分类Dev

递归算法的空间复杂度

来自分类Dev

此特定算法的时间复杂度

来自分类Dev

改善此算法的时间复杂度

来自分类Dev

此特定算法的时间复杂度

来自分类Dev

此嵌套循环的算法复杂度

来自分类Dev

提高此算法的时间复杂度?

来自分类Dev

该算法的时间复杂度是否为Θ(n)?

来自分类Dev

复杂度为O(log n),列表/数组未排序的搜索算法

来自分类Dev

是否有可用的时间复杂度为O(N)的排序算法?

来自分类Dev

汽车加油问题(贪心算法),嵌套循环,复杂度为O(n)

Related 相关文章

  1. 1

    为什么字符串的空间复杂度为O(n)而数字为O(1)?

  2. 2

    为什么该算法的Big-O复杂度为O(n ^ 2)?

  3. 3

    为什么这个时间复杂度为O(n)?

  4. 4

    为什么此函数的圆柱复杂度为12?

  5. 5

    为什么堆排序的空间复杂度为O(1)?

  6. 6

    为什么带有链接列表的mergesort空间复杂度O(log(n))?

  7. 7

    “三个和”问题的空间复杂度-为什么是O(n)?

  8. 8

    为什么带有链接列表的mergesort空间复杂度O(log(n))?

  9. 9

    为什么以下c ++代码的时间复杂度为O(n ^ n)?

  10. 10

    为什么以下代码的时间复杂度为O(n ^ 2)?

  11. 11

    为什么置换函数的时间复杂度为O(n!)

  12. 12

    为什么在redis SET中插入的时间复杂度为O(n)?

  13. 13

    为什么我的 python 代码的时间复杂度为 O(N**2)

  14. 14

    O(n log n)时间和O(1)空间复杂度与O(n)时间和O(n)空间复杂度的算法

  15. 15

    给定递归表达式,找到空间复杂度为 O(1) 的算法

  16. 16

    C ++中strstr()函数的时间复杂度,空间复杂度和算法是什么?

  17. 17

    为什么此算法为O(N)?

  18. 18

    递归算法的空间复杂度

  19. 19

    Ids算法的空间复杂度

  20. 20

    递归算法的空间复杂度

  21. 21

    此特定算法的时间复杂度

  22. 22

    改善此算法的时间复杂度

  23. 23

    此特定算法的时间复杂度

  24. 24

    此嵌套循环的算法复杂度

  25. 25

    提高此算法的时间复杂度?

  26. 26

    该算法的时间复杂度是否为Θ(n)?

  27. 27

    复杂度为O(log n),列表/数组未排序的搜索算法

  28. 28

    是否有可用的时间复杂度为O(N)的排序算法?

  29. 29

    汽车加油问题(贪心算法),嵌套循环,复杂度为O(n)

热门标签

归档