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
with0 < i < A.length - 1
such that:A[0] < A[1] < ... A[i-1] < A[i]
A[i] > A[i+1] > ... > A[A.length - 1]
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:
0 <= A.length <= 10000
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;
}
}