OJ lintcode 最长上升连续子序列

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。)
注意事项
time
您在真实的面试中是否遇到过这个题?
Yes
样例
给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4.
给定 [5, 1, 2, 3, 4], 其最长上升连续子序列(LICS)为 [1, 2, 3, 4], 返回 4.

class Solution {
public:
    /**
     * @param A an array of Integer
     * @return  an integer
     */
    int longestIncreasingContinuousSubsequence(vector<int>& A) {
        // Write your code here
        if(A.size()==0){
            return 0;
        }
        if(A.size()==1){
            return 1;
        }
        int maxlength1=0;
        int length1=1;
        for(int i=0;i<A.size()-1;i++){
            int j=i+1;
            if(A[i]<A[j]){
                length1++;
            }
            else{
                length1=1;
            }

            if(length1>maxlength1){
                maxlength1=length1;
            }
        }
        int maxlength2=0;
        int length2=1;
        for(int i=A.size()-1;i>0;i--){
            int j=i-1;
            if(A[j]>A[i]){
                length2++;
            }
            else{
                length2=1;
            }
            if(length2>maxlength2){
                maxlength2=length2;
            }
        }
        
        return maxlength2 > maxlength1 ? maxlength2:maxlength1;

    }
};
    原文作者:zhaozhengcoder
    原文地址: https://www.jianshu.com/p/7f60b0d543ee#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞