Valid Mountain Array

Given an array of integers arr, return true if and only if it is a valid mountain array.

Recall that arr is a mountain array if and only if:

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]

Example 1:

Input: arr = [2,1]
Output: false

Example 2:

Input: arr = [3,5,5]
Output: false

Example 3:

Input: arr = [0,3,2,1]
Output: true

Constraints:

1 <= arr.length <= 104
0 <= arr[i] <= 104

Solution

class Solution {

    /**
     * @param Integer[] $arr
     * @return Boolean
     */
    function validMountainArray($arr) {
        
        if( count($arr) < 3 ) return false; 

        if( $arr[0] > $arr[1] ) return false;

        $peak = array_search(max($arr), $arr);
        
        if( $peak == 0 || $peak == (count($arr)-1) ) return false;

        for( $i = $peak; $i > 1; $i-- ) {
            if( $arr[$i] <= $arr[$i-1] ) {
                return false;
            }
        }
        
        for( $i = $peak; $i < count($arr) - 1; $i++ ) {
            if( $arr[$i] <= $arr[$i+1] ) {
                return false;
            }
        }

        return true;

    }
}

5,623 thoughts on “Valid Mountain Array”


    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 9969664 bytes) in /home/webcodi/public_html/wp-includes/comment-template.php on line 2420