【发布时间】:2018-06-16 01:18:09
【问题描述】:
我想知道在 C 语言中是否可以在 O(N) 时间内找到一个数组是否有重复项,但是您可以使用辅助数据结构,例如哈希表。请记住,数据结构中的插入也很重要。感谢您的关注。
【问题讨论】:
-
你试过什么?你提到了哈希表——它看起来是一个很好的方向——你会用它做什么?
-
这个问题不是 C 特有的。
标签: c arrays time duplicates
我想知道在 C 语言中是否可以在 O(N) 时间内找到一个数组是否有重复项,但是您可以使用辅助数据结构,例如哈希表。请记住,数据结构中的插入也很重要。感谢您的关注。
【问题讨论】:
标签: c arrays time duplicates
是的,哈希表可以工作。
为每个单词计算哈希并尝试将其插入表存储桶中。如果桶非空,则比较桶中的单词,如果新词不存在,则将其添加到桶中,否则您会发现重复。
这意味着您只处理输入的单词一次,但是,您可能需要多次检查存储桶中的单词。
处理输入是 O(N),处理桶是哈希表大小的函数。
大小为 1 的表格将导致检查每个单词 N 次,因此是 O(N2)。 N 的表大小将导致检查每个单词 0 次,因此将是 O(N)。
【讨论】: