数组-最长上升连续子序列

2017-11-05  本文已影响6人  Summer舒舒

一、LintCode链接

最长上升连续子序列

二、问题描述

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)

三、关键点分析

四、解决思路(Java)

  public int longestIncreasingContinuousSubsequence(int[] A) {
        if (A == null) {
            return 0;
        }

        if (A.length <= 2) {
            return A.length;
        }

        int maxLength = 2;
        int currentLength = 2;

        for (int i = 2; i < A.length; i++) {
            if (A[i - 2] < A[i - 1] && A[i - 1] < A[i]
                    || A[i - 2] > A[i - 1] && A[i - 1] > A[i]) {
                currentLength++;
            } else {
                maxLength = Math.max(maxLength, currentLength);
                currentLength = 2;
            }
        }

        maxLength = Math.max(maxLength, currentLength);
        return maxLength;
    }
上一篇下一篇

猜你喜欢

热点阅读