I was asked the following question in my interview yesterday:
Consider a Java or C++ array say X which is sorted and no two elements in it are same. How best can you find an index say i such that element at that index is also i. That is X[i] = i.
As clarification she also gave me an example:
Array X : -3 -1 0 3 5 7
index : 0 1 2 3 4 5
Answer is 3 as X[3] = 3.
The best I could think was a linear search. After the interview I though a lot on this problem but could not find any better solution. My argument is: the element with the required property can be anywhere in the array. So it could also be at the very end of the array so we need to check every element.
I just wanted to confirm from the community here that I'm right. Please tell me I'm right :)
iwherex[i] = 3in a sorted array. This question is an interesting one. If the candidate answers it immediately, chances are they've seen it before, but they might be clever and spotted the extra trick immediately. If the candidate answers it after 30 seconds, they've spotted the trick. If they can't answer, they haven't spotted it. To separate the clever from the knowledgeable, ask it with an array offloat, see if you get the same (now incorrect) answer ;-)