我想知道是否有可能在C中找到一个数组在O(N)时间内是否有重复,但是你可以使用辅助数据结构,比如哈希表。请记住,数据结构中的插入也适用于时间。谢谢你的关注。
答案 0 :(得分:1)
是的,哈希表可能有效。
对于每个单词,您计算哈希值并尝试将其插入表格桶中。如果存储桶非空,则比较存储桶中的单词,如果新单词不存在,则将其添加到存储桶中,否则您会发现重复。
这意味着您只处理输入的单词一次,但是,您可能需要多次检查存储桶中的单词。
处理输入是O(N),处理桶是哈希表大小的函数。
大小为1的表将导致每个字检查N次,因此将是O(N 2 )。表大小为N将导致检查每个单词0次,因此将是O(N)。