Back to all solutions

#162 - Find Peak Element

Problem Description

A peak element is an element that is strictly greater than its neighbors.

Given a 0-indexed integer array nums, find a peak element, and return its index.

If the array contains multiple peaks, return the index to any of the peaks.

You may imagine that nums[-1] = nums[n] = -∞. In other words, an element is always considered to be strictly greater than a neighbor that is outside the array.

You must write an algorithm that runs in O(log n) time.

Solution

/**
 * @param {number[]} nums
 * @return {number}
 */
var findPeakElement = function(nums) {
  let left = 0;

  for (let right = nums.length - 1, middle = 0; left < right;) {
    middle = Math.floor((right + left) / 2);
    if (nums[middle] > nums[middle + 1]) {
      right = middle;
    } else {
      left = middle + 1;
    }
  }

  return left;
};