美文网首页
LintCode - 最长上升连续子序列(普通)

LintCode - 最长上升连续子序列(普通)

作者: 柒黍 | 来源:发表于2017-02-14 23:18 被阅读0次

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    难度:容易
    要求:

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

    样例

    给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4.
    给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [1, 2, 3, 4], 返回 4.
    

    思路

    public class Solution {
        /**
         * @param A an array of Integer
         * @return  an integer
         */
        public int longestIncreasingContinuousSubsequence(int[] A) {
            if (A == null || A.length == 0) {
                return 0;
            }
            
            //返回值
            int reValue = 1;
            
            //首先遍历从左到右
            int len = 1;
            for(int i = 1; i < A.length; i++){
                if(A[i] > A[i - 1]){
                    len++;//长度增加
                }else{
                    len = 1;//长度为1
                }
                reValue = Math.max(len, reValue);
            }
            
            //再遍历从右到左
            len = 1;
            for(int i = A.length - 1; i > 0; i--){
                if(A[i - 1] > A[i]){
                    len++;
                }else{
                    len = 1;
                }
                reValue = Math.max(len, reValue);
            }
            return reValue;
        }
    }
    

    相关文章

      网友评论

          本文标题:LintCode - 最长上升连续子序列(普通)

          本文链接:https://www.haomeiwen.com/subject/zontwttx.html