2020-09-16 LongestTurbulentSubar

2020-09-17  本文已影响0人  阿术和薇薇安
/**
 * @author liluo
 * @create 2020/9/15
 * @description 数字规律:大小大小大小大小大小大小,或者:小大小大小大小大小大小大。
 * 要特别注意处理相邻两个数字相同的情况
 **/
public class LongestTurbulentSubarray {
    public int maxTurbulenceSize(int[] A) {
        if (A.length == 1) {
            return 1;
        }
        int expect = 0;// -1:小于  1:大于
        int fact =0;
        int maxLen = 0, len = 0;
        for (int i = 0; i < A.length-1; i++) {
            if (A[i] > A[i+1]) {
                fact = -1;
            }else if (A[i] < A[i+1]) {
                fact = 1;
            }else if (A[i] == A[i+1]) {
                fact = 0;
            }

            if (fact == 0) {
                // 相邻两个数字相同
                maxLen = Math.max(maxLen, len+1);
                len = 0;
                expect = 0;
            }else {
                if (expect == 0 || fact == expect) {
                    len ++;
                    expect = -fact;
                } else {
                    maxLen = Math.max(maxLen, len+1);
                    len = 1;
                    expect = -fact;
                }
            }

        }
        return Math.max(maxLen, len+1);
    }
}

上一篇 下一篇

猜你喜欢

热点阅读