Longest Mountain in Array LeetCode solution in Java

1
class Solution {
2
public int longestMountain(int[] arr) {
3
if (arr.length < 3) return 0;
4
int max = 0;
5
for (int i = 0; i < arr.length; i++) {
6
if (isPeak(arr, i)) {
7
int leftLength = left(arr, i);
8
int rightLength = right(arr, i);
9
max = Math.max(max, leftLength + rightLength + 1);
10
}
11
}
12
return max;
13
}
14

15
public int left(int[] arr, int i) {
16
int j = i - 1;
17
while (j >= 0 && arr[j] < arr[j + 1]) j--;
18
return i - (j + 1);
19
}
20

21
public int right(int[] arr, int i) {
22
int j = i + 1;
23
while (j < arr.length && arr[j - 1] > arr[j]) j++;
24
return j - (i + 1);
25
}
26

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];
29
}
30
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0