Skip to main content
Back to problems
#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)
LeetCode
solution.rs
/*
 * 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
  }
}