已知一个数组A[0..n-1]和其大小n(不下降序列,元素值可能相同),判断是否存在A[i]=i,返回值为bool,要求时间复杂度小于o(n)。
测试样例:
[1,1,3,4,5]
返回:true
# -*- coding:utf-8 -*- class MagicIndex: def findMagicIndex(self, A, n): # write code here if n==0: return True return self.magic(A,0,n-1) def magic(self,A,start,end): if start>end: return False mid=(start+end)/2 if mid==A[mid]: return True else: min_v=min(mid-1,A[mid]) max_v=max(mid+1,A[mid]) return self.magic(A,start,min_v) or self.magic(A,max_v,end)