可能重复:
Interview question - Search in sorted array X for index i such that X[i] = i
给出一个整数的排序数组和数组的长度。现在,您必须找到i
的索引a(i)=i
。
如果给出了索引,我可以在o(logn)中执行此操作,但如果未提及索引i
,该怎么办?
答案 0 :(得分:7)
正如亚历山大在评论中所说,指数的预知意味着它是O(1)
,而不是O(log N)
。
而且,除非你没有告诉我们某些信息,否则你需要O(n)
时间来做这件事,而不需要预知:
for x = 0 to len(a) - 1:
if a[x] = x:
return x
澄清:原始问题没有说明列表已经排序,后来又添加了。由于这使得问题与this one重复,因此您应该在那里寻找解决方案的答案。
这个答案将保留原样,因为没有必要复制其他答案,这与未分类的案例有关。
答案 1 :(得分:1)
根据提供的信息,您需要检查值,直到找到匹配项。最坏的情况(不匹配,或在最后一个单元中找到匹配)是O(n)。 如果数组已经排序,则可以进行二进制搜索,即O(log n)。
您的申诉是虚假的,或者您遗漏了一些信息。