【问题标题】:Validate the logic to find the time and space complexity for the given algorithm验证逻辑以找到给定算法的时间和空间复杂度
【发布时间】:2020-05-03 17:40:38
【问题描述】:

我需要确认我为以下算法查找时间和空间复杂度的方法是否正确:

我有一个输入列表,我们可以以以下为例: [1,100,1,1,1,100,1,1,100,1] 让我们将给定的列表称为成本。我正在根据下面的算法修改给定的列表

我的算法:

  1. 循环遍历列表(从位置 2 开始)直到输入列表的末尾。
  2. 我们执行以下操作:cost[i] = cost[i] + min(cost[i-1],cost[i-2])
  3. 我们最终检查最后 2 个元素并从最后两个元素中取最小值 = min = min(last element,second last element)。

我计算时间复杂度的方法: 1. 对于步骤 1 = O(n) 2. For step 2 = O(1) + O(n) (计算两个元素中的最小值) 3. 对于步骤 3 = O(1)

因此时间复杂度 = O(n) + O(1) + O(n) + O(1) = O(n) 。空间复杂度 = O(n) [简单假设所需的空间将用于存储列表]。有人可以告诉我我计算复杂性的方法是否有效?

问候, 阿努巴夫

【问题讨论】:

    标签: algorithm list data-structures complexity-theory


    【解决方案1】:

    这是一个非常简单的动态规划算法。

    如果您使用的是列表,您的最终答案是正确的。但是,您实际上可以将空间复杂度提高到O(1),方法是利用动态编程重复是“无记忆”的,因为我们只需要前两个值来计算下一个值。因此,您可以只存储两个“先前”值,而不是存储整个列表。这个想法类似于computing Fibonacci numbers in O(1) space and O(n) time背后的想法。

    【讨论】:

    • 感谢您提供宝贵意见 Ekesh 。我实际上是在尝试自学算法,并且对这个世界的这个地区很陌生。感谢您的宝贵时间!
    • 没问题。祝你好运!
    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2015-11-17
    • 2012-10-04
    相关资源
    最近更新 更多