数组中重复次数最多的数字

时间:2014-01-08 02:45:21

标签: algorithm sorting

我被问到一个面试问题,要求我在数组中返回最大重复次数,例如{1,1,2,3,4}返回1。

我首先在哈希表中提出了一种方法,它需要空间复杂度O(n)。 然后我说首先对数组进行排序,然后通过它然后我们就可以找到数字。

这需要O(NlogN)

面试官仍不满意。

任何优化?

感谢。

1 个答案:

答案 0 :(得分:4)

访调员本身并不总是在寻找解决方案。有时他们希望找到你做其他事情的能力。您应该询问是否存在对数据的任何限制,例如:

  • 它已经排序了吗?
  • 是否限制在一定范围内的值?

这确立了你思考关于问题的能力,而不是盲目地呕吐你在教科书中读到的东西。例如,如果它已经排序,你可以在O(n)时间,O(1)空间中通过查找具有最大尺寸的运行来完成它。

如果它未分类但仅限于值1..100,您仍然可以在O(n)时间,O(1)空间中通过创建每个可能值的计数来进行,最初都设置为零,然后递增每个项目。

然后问面试官其他事情:

  • 如果有两个具有相同计数的数字,他们想要什么样的行为?
  • 如果他们对您提供的解决方案不满意,请尝试了解他们的想法。他们认为可以在O(log N)或O(1)中完成吗?面试从不是一条单行道。

有无限的其他“解决方案”,例如将整个事物存储到一个类中,以便您可以执行其他优化(例如缓存信息,或使用使操作更快的不同数据结构)。与面试官讨论这些将使他们有机会看到你的行动。

  

顺便说一句,我告诉我的孩子们总是在他们的学校作业中表现出来。如果他们只是简单地回答问题,那就错了,他们什么也得不到。然而,如果他们表明他们的工作并得到错误的答案,老师至少可以看到他们有正确的想法(他们可能只是在路上犯了一个小错误)。

     

这里的情况完全相同。如果你只是简单地说“哈希表”并且采访者有不同的想法,这将是一个非常简短的面试问题。

     

然而,说“基于未排序的数组,不可能将数据保存在不同的数据结构中,并且没有数据值的限制,它会显示哈希表是最有效的方式,但是,如果有其他信息我还不知道,可能会有更好的方法“会表明你已经考虑过了,并且可能会与面试官展开对话,以帮助你。

最重要的是,当面试官问你一个问题时,并不总是认为它和你最初的想法一样简单。除了技术知识,他们可能正在寻找你如何解决问题,你如何处理小林丸的问题,你将如何在团队中工作,如何对待困难的客户,你是否是一个壁橱精神病患者和无尽的其他可能性。

相关问题