发送批量访谈算法

时间:2012-11-12 16:42:58

标签: algorithm

我在其他网站上遇到过以下面试问题:

  

收件箱中会收到一堆电子邮件。你想发送所有的   发件人地址到某个服务器。你可以分批发送它们(每个   批量包含一堆发件人电子邮件地址)。限制   是没有批次可以包含重复的电子邮件地址。你好吗?   编写程序以批量发送所有电子邮件地址   它需要最少的批次数。

     

分析复杂性

我喜欢的答案涉及将电子邮件放入二叉搜索树(从而删除重复项),然后将其序列化并发送。这将只发送一个批次,并且是O(n * log n)时间。有人愿意用更好的解决方案来加入吗?

1 个答案:

答案 0 :(得分:3)

您可以使用哈希,首先检查特殊名称是否在哈希值中,如果没有,您将把它放入哈希并将其添加到批处理中。这是平均O(n),但您当前的方法是O(n logn)。

您当前的方法是O(n log n),因为创建二叉树需要O(n logn),因为您使用任何比较基算法都无法阻止n log n障碍。

关于散列函数,它平均需要O(n)。总之,它比速度排序方法更好,但它可能需要太大的空间,你应该考虑你的数据格式。