#852
Medium Algorithms Peak index in a mountain array
Array Binary Search
66.9% acceptance
Feb 22, 2026
8459
1951
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.
Solution
Rust
Time O(n log n)
Space O(1)
/*
* 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.
*/
impl Solution {
pub fn peak_index_in_mountain_array(arr: Vec<i32>) -> i32 {
let mut lo = 0usize;
let mut hi = arr.len() - 1;
while lo < hi {
let mid = (lo + hi) / 2;
if arr[mid] < arr[mid + 1] { lo = mid + 1; }
else { hi = mid; }
}
lo as i32
}
}