数组中的最长山脉(中等)
2020年10月25日
题目来源:力扣
解题
找到最近的第一个左山脚,上山下山后找到右山脚,不断更新最长山脉值
class Solution {
public int longestMountain(int[] A) {
int len=A.length;
int res=0;
int left=0;
while(left+2<len){
//右山脚初始化
int right=left+1;
//左山脚是不是最低的
if(A[left]<A[left+1]){
while(right<len-1 && A[right]<A[right+1])
++right;
//两种情况:1.到山顶,2.到数组末尾
if(right<len-1 && A[right]>A[right+1]){
//到山顶
//开始下山
while(right<len-1 && A[right]>A[right+1])
++right;
res=Math.max(res,(right-left+1));
}else{
//到数组末尾
++right;
}
}
left=right;
}
return res;
}
}