Longest Turbulent Subarray LeetCode solution in Java
1class Solution {2public int maxTurbulenceSize(int[] arr) {3if (arr.length == 1) {4return 1;5}6int l = 0, r = 1;7int diff = arr[l] - arr[r];8int max;9if (diff == 0) {10l = 1;11r = 1;12max = 1;13} else {14l = 0;15r = 1;16max = 2;17}18for (int i = 1; r < arr.length - 1; i++) {19int nextdiff = arr[i] - arr[i + 1];20if (diff < 0) {21if (nextdiff > 0) {22r++;23} else if (nextdiff == 0) {24l = i + 1;25r = i + 1;26} else {27l = i;28r = i + 1;29}30} else {31if (nextdiff < 0) {32r++;33} else if (nextdiff == 0) {34l = i + 1;35r = i + 1;36} else {37l = i;38r = i + 1;39}40}41diff = nextdiff;42max = Math.max(max, r - l + 1);43}44return max;45}46}