Solution to Longest Turbulent Subarray problem.

class Solution {
    public int maxTurbulenceSize(int[] A) {
        if (A.length == 1) {
            return 1; 
        } else if (A.length == 2) {
            return (A[0] == A[1]) ? 1 : 2;
        }

        int prev = A[0] - A[1];
        int localMax = (prev == 0) ? 1 : 2;
        int globalMax = localMax;  

        for (int i = 2; i < A.length; i++) {
            int cur = A[i-1] - A[i];

            if ((prev > 0 && cur < 0) || (prev < 0 && cur > 0)) {
                localMax++;
            } else {
                /*--
                 # case analysis
                 prev > 0  && cur > 0    -> localMax = 2   a > b > c
                 prev < 0  && cur < 0    -> localMax = 2   a < b < c 
                 prev == 0 && cur != 0   -> localMax = 2   a = a ? b
                 prev !=0  && cur == 0   -> localMax = 1   a ? b = b
                 prev == 0 && cur == 0   -> localMax = 1   a = a = a 
                ---*/
                localMax = (cur == 0) ? 1 : 2;
            }

            globalMax = Math.max(globalMax, localMax);
            prev = cur;
        }

        return globalMax;
    }
}