题目
给一个字符串,如1,3,2,则3就是一个峰值
规定正无穷和负无穷都是 负无穷
返回任意一个峰值
思路
用二分法,先比较mid和mid左右两边的数,然后在递归两边
代码
def search_peak(list):
return search_peakhelper(list,0,len(list)-1)
def search_peakhelper(list,start,end):
if start == end:
return list[start]
if start + 1 == end:
if list[start]>list[end]:
return list[start]
else:
return list[end]
else:
mid = (start + end)//2
if list[mid]>list[mid+1] and list[mid]>list[mid-1]:
return list[mid]
if list[mid]>list[mid+1] and list[mid]<list[mid-1]:
return search_peakhelper(list,start,mid-1)
return search_peakhelper(list,mid+1,end)