已知数组A[0..n-1]和数组大小n(升序数组,元素值各不相同),若存在A[i]=i则称该数组有魔术索引,请判断该数组是否存在魔术索引,返回值为bool,要求复杂度优于o(n)。
测试样例:
[1,2,3,4,5]
返回:false
# -*- coding:utf-8 -*- class MagicIndex: def findMagicIndex(self, A, n): if n < 1 or A[0] > 0 or A[n - 1] < n - 1: return False return self.find(A, 0, n - 1) def find(self, A, start, end): if start == end and A[start] != start: return False mid = (start + end)/2 if A[mid] == mid: return True elif A[mid] > mid: return self.find(A, start, mid - 1) else: return self.find(A, mid + 1, end)