【发布时间】: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