Finding peak of a centrally peaked array in JavaScript



Centrally Peaked Array

We call an array arr a centrally peaked array if the following properties hold −

  • arr.length >= 3

  • There exists some i with 0 < i < arr.length - 1 such that

    • arr[0] < arr[1] < ... arr[i-1] < arr[i]

    • arr[i] > arr[i+1] > ... > arr[arr.length - 1]

Problem

We are required to write a JavaScript function that takes in an array of numbers, arr, as the first and the only argument.

The input array is a centrally peaked array. Our function is supposed to return the peak index of this centrally peaked array.

For example, if the input to the function is

Input

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1];

Output

const output = 4;

Output Explanation

Because the element at index 4 (15) is the peak element of this array.

Example

Following is the code −

 Live Demo

const arr = [4, 6, 8, 12, 15, 11, 7, 4, 1]; const findPeak = (arr = []) => {    if(arr.length < 3) {       return -1    }    const helper = (low, high) => {       if(low > high) {          return -1       }       const middle = Math.floor((low + high) / 2)       if(arr[middle] <= arr[middle + 1]) {          return helper(middle + 1, high)       }       if(arr[middle] <= arr[middle - 1]) {          return helper(low, middle - 1)       }       return middle    }    return helper(0, arr.length - 1) }; console.log(findPeak(arr));

Output

4
Updated on: 2021-04-24T09:44:10+05:30

380 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements