56ms
class Solution(object):
def peakIndexInMountainArray(self, A):
"""
:type A: List[int]
:rtype: int
"""
return A.index(max(A))
---------------------------------------------
57ms 线性循环
class Solution(object):
def peakIndexInMountainArray(self, A):
"""
:type A: List[int]
:rtype: int
"""
#linear
for i in xrange(len(A)):
if A[i]>A[i+1]:
return i
----------------------------------------------
二分法 56ms
note:注意二分法的两个端点
class Solution(object):
def peakIndexInMountainArray(self, A):
"""
:type A: List[int]
:rtype: int
"""
#binary
lenth = len(A)
a = 0
b = lenth - 1
i = (lenth-1)/2
while(True):
if A[i]>A[i+1] and A[i]>A[i-1]:
return i
elif A[i]>A[i+1] and A[i]<A[i-1]:
b = i
i = (a+b)/2
else:
a = i
i = (a+b)/2
-------------------------------------
正宗binary 从一条轴上两端往中间,判定条件是端点交错,最后lo=hi
54ms
class Solution(object):
def peakIndexInMountainArray(self, A):
"""
:type A: List[int]
:rtype: int
"""
#binary
lo = 0
hi = len(A)-1
i = (lo+hi)/2
while(lo<hi):
if A[i]<A[i+1]:
lo = i+1
else:
hi = i
i = (lo+hi)/2
return lo