我們把數組 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;}
}