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

Algorithm 数组中重复次数最多的数,algorithm,sorting,Algorithm,Sorting,我被问到一个面试问题,要求我返回数组中重复次数最大的数字,例如,{1,1,2,3,4}返回1 我首先在hashtable中提出了一种方法,它需要在上的空间复杂度。 然后我说先对数组进行排序,然后遍历它,然后我们就可以找到数字了 这需要ONlogN 面试官仍然不满意 有优化吗 谢谢。面试官本身并不总是在寻找解决方案。有时候他们想知道你做其他事情的能力。您应该询问数据是否存在任何限制,例如: 已经分类了吗? 值是否限制在某个范围内? 这建立了你思考问题的能力,而不是盲目地吐出课本上读过的东西。例如,

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

我首先在hashtable中提出了一种方法,它需要在上的空间复杂度。 然后我说先对数组进行排序,然后遍历它,然后我们就可以找到数字了

这需要ONlogN

面试官仍然不满意

有优化吗


谢谢。

面试官本身并不总是在寻找解决方案。有时候他们想知道你做其他事情的能力。您应该询问数据是否存在任何限制,例如:

已经分类了吗? 值是否限制在某个范围内? 这建立了你思考问题的能力,而不是盲目地吐出课本上读过的东西。例如,如果已经排序,只需查找具有最大大小的跑步记录,就可以在时间和空间上完成排序

如果未排序但仅限于值1..100,您仍然可以通过创建每个可能值的计数在时间和空间上进行排序,最初所有值都设置为零,然后为每个项目递增

然后问面试官其他问题,如:

如果有两个数相同的数字,他们想要什么样的行为? 如果他们对你提供的解决方案不满意,试着了解他们的想法。他们认为这可以用Olog N或O1完成吗?面试从来不是单行道。 还有无限的其他解决方案,比如将整个内容存储到一个类中,这样您就可以执行其他优化,比如缓存信息,或者使用不同的数据结构,从而使操作更快。与面试官讨论这些问题将给他们一个看到你行动的机会

顺便说一句,我告诉我的孩子们在他们的学校作业中一定要表现出锻炼身体的能力。如果他们只是随便说出答案,而答案是错的,他们将一无所获。然而,如果他们展示了自己的计算结果并得到了错误的答案,老师至少可以看到他们的想法是正确的,他们可能只是在这一过程中犯了一个小错误

这里的情况完全一样。如果你简单地说hashtable,面试官有不同的想法,那将是一个非常简短的面试问题

但是,如果说基于未排序的数组,不可能将数据保存在不同的数据结构中,也不限制数据值,那么哈希表似乎是最有效的方法,但是,如果我还不了解其他一些信息,那么可能会有更好的方法表明您已经对其进行了一些思考,并可能与面试官展开对话,帮助你走出困境


底线是,当面试官问你一个问题时,不要总是认为它像你最初想的那样直截了当。除了技术知识外,他们可能还想看看你如何解决问题,如何处理小林丸式的问题,如何在团队中工作,如何对待难相处的客户,你是否是一个隐秘的精神病患者和无尽的其他可能性。

面试官本身并不总是在寻找解决方案。有时候他们想知道你做其他事情的能力。您应该询问数据是否存在任何限制,例如:

已经分类了吗? 值是否限制在某个范围内? 这建立了你思考问题的能力,而不是盲目地吐出课本上读过的东西。例如,如果已经排序,只需查找具有最大大小的跑步记录,就可以在时间和空间上完成排序

如果未排序但仅限于值1..100,您仍然可以通过创建每个可能值的计数在时间和空间上进行排序,最初所有值都设置为零,然后为每个项目递增

然后问面试官其他问题,如:

如果有两个数相同的数字,他们想要什么样的行为? 如果他们对你提供的解决方案不满意,试着了解他们的想法。他们认为这可以用Olog N或O1完成吗?面试从来不是单行道。 还有无限的其他解决方案,比如将整个内容存储到一个类中,这样您就可以执行其他优化,比如缓存信息,或者使用不同的数据结构,从而使操作更快。与面试官讨论这些问题将给他们一个看到你行动的机会

顺便说一句,我告诉我的孩子们在他们的学校作业中一定要表现出锻炼身体的能力。如果他们只是随便说出答案,而答案是错的,他们将一无所获。然而,如果他们展示了自己的计算结果并得到了错误的答案,老师至少可以看到他们的想法是正确的,他们可能只是在这一过程中犯了一个小错误

这里的情况完全一样。如果你简单地说 hashtable和面试官有不同的想法,这将是一个非常简短的面试问题

但是,如果说基于未排序的数组,不可能将数据保存在不同的数据结构中,也不限制数据值,那么哈希表似乎是最有效的方法,但是,如果我还不了解其他一些信息,那么可能会有更好的方法表明您已经对其进行了一些思考,并可能与面试官展开对话,帮助你走出困境



底线是,当面试官问你一个问题时,不要总是认为它像你最初想的那样直截了当。除了技术知识外,他们可能还想看看你如何解决问题,如何处理小林丸式的问题,如何在团队中工作,如何对待难相处的客户,你是否是一个隐秘的精神病患者以及无尽的其他可能性。

桶式排序仍然需要空间,interwiever似乎对此不满意。数组中的数字有作用域吗?他们对哈希表解决方案不满意,这是无法克服的,可能是因为空间复杂性,哈希表也是如此。@Byakuya我很确定,如果你想准时,你不可能比在空间上做得更好,排序不能使用额外的空格Bucket排序仍然需要空格,而且interwiever似乎对此不满意。数组中的数字是否有作用域?他们不满意哈希表解决方案,它在上运行,这是无法克服的,可能是因为空间复杂性,hashtable也是开的。@Byakuya我很确定,如果你想准时,你不可能比在空间上做得更好,而且排序不能使用额外的空间不是你的解决方案,因为空间上的值是有限的,这是一个简单的hashtable方法?@Byakuya,不是,因为N是项目数而不是范围。无论有5个项目还是10亿个项目,范围都是1..100,因此空间复杂度是恒定的。无论如何,我删除了伪代码,因为它与答案并不相关。有时我只是添加了太多该死的细节:-哦,对了,所以这没关系,k是可能性的数字,但仍然不是O1;。你还可以指出一个事实,面试官可能只是一个白痴,有一个未排序的数组,没有范围限制,这些基本上是最好的解决方案,也可以相当公平地假设数组没有排序,因为OP建议将排序作为solution@aaronman,OP建议分类,我看不到任何证据表明面试官说这是未分类的。事实上,给定的样本数组是经过排序的,所以OP至少应该已经澄清了。这就是我的意思,当我说你需要讨论思维过程和可能的其他你还没有的信息。当然,一位乐于助人的面试官可能会问,为什么OP认为排序是必要的,尽管可能不太明显。作为一种简单的哈希表方法,有限值的解决方案不是实际上在空间上吗?@Byakuya,不是,因为N是项数而不是范围。无论有5个项目还是10亿个项目,范围都是1..100,因此空间复杂度是恒定的。无论如何,我删除了伪代码,因为它与答案并不相关。有时我只是添加了太多该死的细节:-哦,对了,所以这没关系,k是可能性的数字,但仍然不是O1;。你还可以指出一个事实,面试官可能只是一个白痴,有一个未排序的数组,没有范围限制,这些基本上是最好的解决方案,也可以相当公平地假设数组没有排序,因为OP建议将排序作为solution@aaronman,OP建议分类,我看不到任何证据表明面试官说这是未分类的。事实上,给定的样本数组是经过排序的,所以OP至少应该已经澄清了。这就是我的意思,当我说你需要讨论思维过程和可能的其他你还没有的信息。当然,一位乐于助人的面试官可能会问,为什么OP认为分类是必要的,尽管可能是以一种不太明显的方式。