考虑正数的INT数组:
{1,3,6,4,7,6,9,2,6,6,6,6,8}给定:只有一个数字重复,用高效算法返回数字和位置。
对高效的算法有什么想法吗?
发布于 2011-02-09 05:54:36
一种可能的解决方案是维护外部散列映射。迭代数组,并将找到的值的索引放入散列映射中。完成后,您现在知道哪个数字是重复的,以及找到它的位置的索引。
发布于 2011-02-13 03:46:06
在面试的情况下,我想你有机会围绕这个问题提问,例如,有多少个数字?数字的范围是多少?您可以声明,最佳算法可能会根据不同而变化。
这给了你一个展示如何解决问题的机会。
如果数组中整数的范围足够小,那么可以创建另一个数组来记录找到每个整数的次数,然后线性遍历数组,累积出现次数,当出现次数为2时停止。
发布于 2011-02-09 05:52:49
Hash在这里会做得很好。一个接一个地添加数字,每次检查数字是否已经存在。
https://stackoverflow.com/questions/4938882
复制相似问题