The Valid Mountain Array Problem using Java

Introducing the problem

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

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

  • A.length >= 3
  • There exists some i with 0 < i < A.length - 1 such that:
    • A[0] < A[1] < ... A[i-1] < A[i]
    • A[i] > A[i+1] > ... > A[A.length - 1]
As found on Leetcode.com

The constraints

Example 1:

Input: [2,1]
Output: false

Example 2:

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

Example 3:

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

Note:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000 

How to solve this in Java

class Solution {
    // Input array of integers
    public boolean validMountainArray(int[] A) {
        // if we have less than 3 integers, it will always be false
        if (A.length<3) return false;

        // set our counter variables
        int len = A.length;
        int i = 0;
        
        // walk up the array until it decreases
        while (i+1 < len && A[i]<A[i+1])
            // increment our counter
            i++;
        
        // if the start or end characters are the same as our counter
        // then the mountain didn't decrease
        if (i==0 || i==len-1)
            return false;
        
        // walk the array while it decreases
        // starting at the last counter index
        while (i+1 < len && A[i]>A[i+1])
            i++;
        
        // return a boolean if the counter is the same as the length
        return i == len-1;

    }
}
Tags:

Leave a Reply

Your email address will not be published.