1095.山脉数组
# """
# This is MountainArray's API interface.
# You should not implement it, or speculate about its implementation
# """
#class MountainArray:
# def get(self, index: int) -> int:
# def length(self) -> int:
def find_peak(alist,first,last):
while first<last:
mid=(first+last)//2
if alist.get(mid)>alist.get(mid+1):
last=mid
else:
first=mid+1
return mid
def search_up(target,alist,first,last):
mid=(first+last)//2
if first>last:
return -1
elif target==alist.get(mid):
return mid
elif target>alist.get(mid):
return search_up(target,alist,mid+1,last)
else:
return search_up(target,alist,first,mid-1)
def search_down(target,alist,first,last):
mid=(first+last)//2
if first>last:
return -1
elif target==alist.get(mid):
return mid
elif target>alist.get(mid):
return search_down(target,alist,first,mid-1)
else:
return search_down(target,alist,mid+1,last)
class Solution:
def findInMountainArray(self, target: int, mountain_arr: 'MountainArray') -> int:
# return find_peak(mountain_arr,0,mountain_arr.length()-1)
peak=find_peak(mountain_arr,0,mountain_arr.length()-1)
rlt=search_up(target,mountain_arr,0,peak)
if rlt==-1:
rlt=search_down(target,mountain_arr,peak+1,mountain_arr.length()-1)
return rlt
else:
return rlt
这篇好像没啥说的,给大家分享一下思路吧。