【问题标题】:Is n operations of O(1) average time each considered O(n) in average?平均时间为 O(1) 的 n 次操作是否平均每次都被视为 O(n)?
【发布时间】:2013-06-30 17:59:15
【问题描述】:

我正在学习数据结构考试,我正在尝试解决这个问题:

给定一个包含 n 个数字和一个数字 Z 的数组,在 O(n) 平均时间内找到 x,y,例如 x+y=Z。

我的建议是将数组的内容移动到哈希表中,并使用开放寻址执行以下操作:

对于每个数字 A[i] 在哈希表中搜索 ZA[i] (每个操作平均 O(1)。)最坏的情况下,您将执行 n 次搜索,每次 O(1) 平均时间,即平均 O(n)。

我的分析正确吗?

【问题讨论】:

  • 是的。更正式地说,您需要解释为什么将数组转换为哈希表也可以在 O(n) 时间内完成。
  • 这就是开放寻址的作用
  • @AlaaM。是的,但如果你真的想证明这一点,你必须这么说。

标签: data-structures hash language-agnostic time-complexity


【解决方案1】:

鉴于您第二次遍历所有数组,是的,即 O(n) * O(1)(而不是我之前所说的 O(n)+O(1))(用于在平均时间),所以你说的是 O(n) 复杂度的算法。

【讨论】:

  • 我最多进行 n 次查找。那么它是 O(n)*O(1) 而不是 O(n) + O(1)
猜你喜欢
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
相关资源
最近更新 更多