今天早上我刚刚接受了一次采访,我收到了一个问题“给出一个从整数列表中删除重复项的算法”。这是一个相当标准的问题,所以我很有信心可以回答。
我在解释,但我说了一些类似“你可以使用哈希表。从第一个整数开始并将其插入哈希表。然后对于每个连续的整数进行哈希表查找以检查整数是否已经在哈希表中,如果没有,则插入它,如果它已经存在,则将其丢弃,因为它是重复的。因此以这种方式遍历列表。如果哈希表设计正确,则查找和插入的平均时间应该是恒定的。
然后面试官回答(我再次解释)“但是哈希表查找不是恒定时间,它们取决于其中已经有多少元素。你描述的算法将是 O(n^2)”
然后我回答“真的吗?我认为如果你设计了一个好的散列函数,那将是常数时间?通常是 O(n)”
然后面试官回答“所以你是说对于一个有很多条目的哈希表和一个只有很少条目的哈希表来说查找时间是一样的”
然后我说“是的。如果设计正确的话。”
然后面试官说“这不是真的”
所以我现在很困惑。如果有人能指出我错在哪里,我将不胜感激