【问题标题】:Finding Fibonacci number by dynamic programming - Algorithm通过动态规划找到斐波那契数 - 算法
【发布时间】:2019-02-20 04:43:20
【问题描述】:

我正在阅读这里投票最多的答案:Difference between Divide and Conquer Algo and Dynamic Programming, 但我没有足够的声誉来发表评论,所以我必须发布一个新问题。

我的问题是:为什么总时间是 O(n)?

据我了解,从大小为 n 的未排序数组中查找元素会花费时间 n。

在寻找斐波那契数的情况下,最坏的情况是检查一个数字是否在备忘录中可能会花费 n 次,因此整个算法将重复 n 次,每次它都会搜索一次该数字,这需要 n 时间。那么总时间应该是 O(n^2) 而不是 O(n)。

谁能指出我误解的地方?谢谢

【问题讨论】:

  • 斐波那契数不存储在您必须搜索的无序数组中。 Fx 存储在 memo[x] 中,因此可以在 O(1) 中读取。
  • 啊,这让我明白了,非常感谢! @m69

标签: algorithm fibonacci


【解决方案1】:

由于记忆化,渐近复杂度变为 O(n)。

搜索记忆斐波那契不是 O(n),考虑到您使用的是数组而不是 LinkedList,它是 O(1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2012-09-06
    • 2016-08-07
    • 1970-01-01
    相关资源
    最近更新 更多