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;

    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容