impl Solution {
pub fn peak_index_in_mountain_array(arr: Vec<i32>) -> i32 {
let mut left = 0;
let mut right = arr.len() + 1;
while left < right {
let mid = (left + right) / 2;
if arr[mid - 1] < arr[mid] && arr[mid + 1] < arr[mid] {
return mid as i32;
}
if arr[mid - 1] > arr[mid] {
right = mid + 1;
} else if arr[mid + 1] > arr[mid] {
left = mid;
}
}
0
}
}
assert_eq!(peak_index_in_mountain_array(vec![0,1,0]), 1);
assert_eq!(peak_index_in_mountain_array(vec![0,2,1,0]), 1);
assert_eq!(peak_index_in_mountain_array(vec![0,10,5,2]), 1);
assert_eq!(peak_index_in_mountain_array(vec![3,4,5,1]), 2);
assert_eq!(peak_index_in_mountain_array(vec![24,69,100,99,79,78,67,36,26,19]), 2);