for i in range(1,len(arr)-1):
if arr[i] == max(arr) and arr[i] > arr[i-1] and arr[i] > arr[i+1]:
return i # 这里一个max的时间复杂度就是o(n)了
这个其实还不是o(n)
不能用max,加算法复杂度
o(n) 解法
for i in range(1, len(arr) - 1):
if arr[i] > arr[i + 1]:
ans = i
break
return ans
二分法的模板
n = len(arr)
left, right, ans = 1, n - 2, 0
while left <= right:
mid = (left + right) // 2 # 地板除
if arr[mid] > arr[mid + 1]:
ans = mid
right = mid - 1
else:
left = mid + 1
return ans