这篇文章讲解的是LintCode第75题:Find Peak Element
Example
Example 1:
Input: [1, 2, 1, 3, 4, 5, 7, 6]
Output: 1 or 6
Explanation:
return the index of peek.
Example 2:
Input: [1,2,3,4,1]
Output: 3
寻找数组中的一个峰值,二分查找法:
class Solution:
"""
@param A: An integers array.
@return: return any of peek positions.
"""
def findPeak(self, A):
# write your code here
start, end = 1, len(A) - 2
while start + 1 < end:
mid = start + (end - start) // 2
if A[mid] < A[mid - 1]:
end = mid
elif A[mid] < A[mid + 1]:
start = mid
else:
end = mid
if A[start] < A[end]:
return end
else:
return start