思路:递增序列长度问题简化版
我的题解
class Solution {
public boolean validMountainArray(int[] a) {
int l = 0, r = 0;
int aSize = a.length;
//从左往右找以第一位元素开头的递增序列长度
for(int i=1;i<aSize;i++){
if(a[i]>a[i-1]) l++;
else break;
}
//从右往左找以最后一位元素开头的递增序列长度
for(int i=aSize-1;i>=1;i--){
if(a[i]<a[i-1]) r++;
else break;
}
if(l == 0 || r==0) return false;
return l+r == aSize - 1;
}
}
官方题解
class Solution {
public boolean validMountainArray(int[] A) {
int N = A.length;
int i = 0;
// 递增扫描
while (i + 1 < N && A[i] < A[i + 1]) {
i++;
}
// 最高点不能是数组的第一个位置或最后一个位置
if (i == 0 || i == N - 1) {
return false;
}
// 递减扫描
while (i + 1 < N && A[i] > A[i + 1]) {
i++;
}
return i == N - 1;
}
}