昨天在面试中,我被问到以下问题:
考虑一个Java或C++数组,例如X
,其中元素已排序且没有两个元素相同。如何最好地找到一个索引i
,使该索引处的元素也等于i。也就是说,X [i] = i
。
为了澄清,她还给了我一个示例:
Array X : -3 -1 0 3 5 7
index : 0 1 2 3 4 5
Answer is 3 as X[3] = 3.
我能想到的最好方法是线性搜索。面试后,我对这个问题思考了很多,但没有找到更好的解决方案。我的论点是:具有所需属性的元素可以在数组的任何位置。因此,它也可能在数组的末尾,因此我们需要检查每个元素。
我只是想从社区这里确认一下我是正确的。请告诉我我是正确的 :)
x[i]=3
的位置。这个问题很有趣。如果候选人能立即回答,很可能他们以前见过这道题,但他们也可能很聪明,在一开始就发现了额外的技巧。如果候选人在30秒后才回答,说明他们发现了这个技巧。如果他们无法回答,说明他们没有发现。为了区分聪明和有知识的人,请用一个float
类型的数组来询问,看看是否得到相同的(现在是错误的)答案;-) - Steve Jessop