Description
You are given an integer mountain array arr
of length n
where the values increase to a peak element and then decrease.
Return the index of the peak element.
Your task is to solve it in O(log(n))
time complexity.
Example 1:
Input: arr = [0,1,0]
Output: 1
Example 2:
Input: arr = [0,2,1,0]
Output: 1
Example 3:
Input: arr = [0,10,5,2]
Output: 1
Constraints:
3 <= arr.length <= 105
0 <= arr[i] <= 106
arr
is guaranteed to be a mountain array.
Solution
Python3
class Solution:
def peakIndexInMountainArray(self, arr: List[int]) -> int:
N = len(arr)
left, right = 0, N - 1
while left < right:
mid = left + (right - left) // 2
if arr[mid + 1] > arr[mid]:
left = mid + 1
else:
right = mid
return left