问题描述:
示例1.
输入:[2,1]
输出:false
示例2.
输入:[3,5,5]
输出:false
示例3.
输入:[0,3,2,1]
输出:true
思路:
1.)先for循环遍历整个数组,找出第一个数字以及角标i,这个数字满足,A[i]>A[i-1]&&A[i]>A[i+1].
2.)定义一个boolean类型的变量flag,初始值为true
3.)左右各进行两个for循环
左边的for循环角标left从0开始小于i,如果存在一个A[left]>=A[left+1],令flag=false.并break出循环.
如果左边for循环的flag值为true的话再进行右边的for循环,右边的for循环角标right从A.length-1开始大于i,如果存在一个A[right-1]<=A[right],令flag=false.并break出循环
最后返回flag就行.此时flag的值就是该数组是否是"山脉数组"
java代码
class Solution {
public boolean validMountainArray(int[] A) {
if(A.length==0||A.length==1||A.length==2){
return false;
}
int k=0;
for(int i=1;i<A.length-1;i++){
if(A[i]>A[i-1]&&A[i]>A[i+1]){
k=i;
break;
}
}
if(k==0){
return false;
}
boolean flag=true;
for(int left=0;left<k;left++){
if(A[left]>=A[left+1]){
flag=false;
break;
}
}
if(flag==true){
for(int right=A.length-1;right>k;right--){
if(A[right-1]<=A[right]){
flag=false;
break;
}
}
}
return flag;
}
}