我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:
B.length >= 3
存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1]
(注意:B 可以是 A 的任意子数组,包括整个数组 A。)
给出一个整数数组 A,返回最长 “山脉” 的长度。
如果不含有 “山脉” 则返回 0。
示例 1:
输入:[2,1,4,7,3,2,5]
输出:5
解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。
示例 2:
输入:[2,2,2]
输出:0
解释:不含 “山脉”。
代码
class Solution {public int longestMountain(int[] A) {boolean up=false;int i=1,res=0;while (i<A.length){int cnt=0;while (i<A.length&&A[i]>A[i-1])//找出左边的递增序列{cnt++;i++;}if(cnt==0||i>=A.length||A[i]==A[i-1]){
//左边不是递增,右边不是递减或者已经没有元素了,这两种情况不需要再找递减了,直接找下一个递增i++;continue;} while (i<A.length&&A[i]<A[i-1])//找出右边递减序列{cnt++;i++;}res= Math.max(res,cnt+1);//比较长短}return res;}
}