Longest Turbulent Subarray
Input: [9,4,2,10,7,8,8,1,9]
Output: 5
Explanation: (A[1] > A[2] < A[3] > A[4] < A[5])Input: [4,8,12,16]
Output: 2Input: [100]
Output: 1Basic Idea:
Java Code:
Last updated
Input: [9,4,2,10,7,8,8,1,9]
Output: 5
Explanation: (A[1] > A[2] < A[3] > A[4] < A[5])Input: [4,8,12,16]
Output: 2Input: [100]
Output: 1Last updated
class Solution {
public int maxTurbulenceSize(int[] A) {
if (A == null || A.length == 0) return 0;
int[] larger = new int[A.length];
int[] smaller = new int[A.length];
Arrays.fill(larger, 1);
Arrays.fill(smaller, 1);
int ret = 1;
for (int i = 1; i < A.length; ++i) {
if (A[i] > A[i - 1]) larger[i] += smaller[i - 1];
else if (A[i] < A[i - 1]) smaller[i] += larger[i - 1];
ret = Math.max(smaller[i], ret);
ret = Math.max(larger[i], ret);
}
return ret;
}
}