我的解法:
看到提示,想到可以通过二分法来查找,只要middle不满足要求就继续查找
class Solution:
def peakIndexInMountainArray(self, arr: List[int]) -> int:
left=0
right=len(arr)-1
middle=(left+right)//2
while(arr[middle-1]>arr[middle] or arr[middle]<arr[middle+1]):
if arr[middle-1]>arr[middle+1]:
right=middle-1
middle=(left+right)//2
else:
left=middle+1
middle=(left+right)//2
return middle
标准解法:
class Solution:
def peakIndexInMountainArray(self, arr: List[int]) -> int:
return bisect_left(range(1,len(arr)-1),True,key = lambda x:arr[x]>arr[x+1])+1
bisect_left是python内置的二分查找函数
https://blog.csdn.net/YMWM_/article/details/122378152