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]
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
思路:就是按照定義來,注意開頭和結尾特殊判斷一下,中間的用i來記錄最高點;
class Solution {
public boolean validMountainArray(int[] A) {
if(A == null || A.length < 3) {
return false;
}
int n = A.length;
// 開頭和結尾特殊判斷,然後判斷中間;
if(A[0] > A[1] || A[n - 1] > A[n - 2]) {
return false;
}
int i = 1;
for(; i < n; i++) {
if(A[i - 1] == A[i]) {
return false;
}
if(A[i - 1] > A[i]) {
break;
}
}
for(int j = i; j < n - 1; j++) {
if(A[j] <= A[j + 1]) {
return false;
}
}
return true;
}
}