【问题标题】:analyzing time complexity分析时间复杂度
【发布时间】:2011-07-30 12:59:33
【问题描述】:

我有 2 个数组

a of length n
b of length m

现在我想找到两个数组共有的所有元素

算法

构建包含 A 的所有元素的哈希映射

现在检查 B 中的每个元素 x 是否存在于 hashmap 中。

分析整体时间复杂度

  • 用于构建哈希图 O(n)
  • 第二步复杂度为 O(m)

所以总体是O(m+n)。我说的对吗?

什么是 O(m+n) = ??当 m 大时,反之亦然?

【问题讨论】:

    标签: algorithm time-complexity


    【解决方案1】:

    O(m) + O(n) = O(m+n),如果你知道 m>n 那么 O(m+n)=O(m+m)=O(m)。

    注意:哈希理论上不保证 O(1) 查找,但实际上您可以依靠它(= 它是平均复杂度,随机输入的预期运行时间)。

    还请注意,您的算法将反复发出 b 的重复元素的信号,这些元素也存在于 a 中。如果这是一个问题,您必须将其存储在您已经检查/打印出该元素的哈希中。

    【讨论】:

      【解决方案2】:

      平均情况时间复杂度为O(m + n)。如果你正在做一些实现,这是你应该考虑的,因为哈希映射通常不会有冲突。 O(m+n) = O(max(m, n))

      然而,如果这是一个测试题,时间复杂度指的是最坏情况时间复杂度。最坏情况下的时间复杂度是O(mn),因为在最坏情况下,每个第二步都可能花费O(n) 时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 2020-12-30
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 1970-01-01
        相关资源
        最近更新 更多