2
public int longestMountain(int[] arr) {3
if (arr.length < 3) return 0;5
for (int i = 0; i < arr.length; i++) {7
int leftLength = left(arr, i);8
int rightLength = right(arr, i);9
max = Math.max(max, leftLength + rightLength + 1);15
public int left(int[] arr, int i) {17
while (j >= 0 && arr[j] < arr[j + 1]) j--;21
public int right(int[] arr, int i) {23
while (j < arr.length && arr[j - 1] > arr[j]) j++;27
public boolean isPeak(int[] arr, int i) {28
return i - 1 >= 0 && i + 1 < arr.length && arr[i - 1] < arr[i] && arr[i + 1] < arr[i];