# 852. Peak Index in a Mountain Array

Medium
An array `arr` a mountain if the following properties hold:
• `arr.length >= 3`
• There exists some `i` with `0 < i < arr.length - 1` such that:
• `arr < arr < ... < arr[i - 1] < arr[i]`
• `arr[i] > arr[i + 1] > ... > arr[arr.length - 1]`
Given a mountain array `arr`, return the index `i` such that `arr < arr < ... < arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1]`.
You must solve it in `O(log(arr.length))` 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.

### 解題

Runtime: 97 ms, faster than 95.21%
Memory Usage: 9.9 MB, less than 43.11%
func peakIndexInMountainArray(arr []int) int {
left := 0
right := len(arr) - 1
for left < right {
mid := ( left + right )/2
if arr[mid] < arr[mid+1] {
left = mid + 1
} else {
right = mid
}
}
return left
}