解法一:枚举山顶
遍历找到同时大于其左右两侧的元素,则为山顶,向两边遍历计算出这座山脉的长度,最后统计最大值。
class Solution {
public int longestMountain(int[] A) {
int max = 0;
for (int i = 1; i < A.length - 1; ++i) {
if ((A[i] > A[i - 1]) && (A[i] > A[i + 1])) {
int left = i - 2;
int right = i + 2;
while ((left >= 0) && (A[left] < A[left + 1])) {
--left;
}
while ((right < A.length) && (A[right] < A[right - 1])) {
++right;
}
max = Math.max(right - left - 1, max);
}
}
return max;
}
}