我的一位朋友在接受采访时被问到这个问题 -
你怎么会找到不同的元素?您可以采取哪些不同的方法?
一个简单但冗长的方法是 - 对两个数组进行排序,继续比较每个元素,在进行错误比较时,您将获得结果.
那么有什么不同的方法呢?在面试中指定逻辑.不期望特定语言的特定代码.伪代码就足够了.
(每个答案请提交一种方法)
我提出这个问题的目的是,当数组大小很小时就可以了.但是当数组大小增加时,你必须考虑一种非常有效的方法.在这种情况下,使用比较绝不可取.
我们给出了一个大小为N的数组,其中包含0到N-2范围内的整数,包括0和N-2.
该阵列可以有多个重复的条目.我们需要在O(N)时间和常量空间中找到一个重复的条目.
我正在考虑获取阵列中所有entires的乘积和总和,以及0到N-2范围内所有数字的乘积和总和.
然后,总和的差异和产品的划分将给出两个方程式.如果给出只有两个重复的条目,这种方法会起作用,但由于可能有两个以上,我认为我的方法失败了.
有什么建议?
编辑:数组是不可变的.我意识到这是一个重要的信息,我很抱歉我忘了早些提到这一点.
在数组[10]中,数组中有1到9的数字,其中一个数字重复(重复数也在1到9之间)如何在不使用循环的情况下找到重复的数字,并且数组可以被横向移动只有一次从上到下.
这不是作业,这是在采访中被问到的