最长上升子序列

来源:互联网 发布:mysql错误1054 编辑:程序博客网 时间:2024/06/05 17:30

lintcode题目链接

dp[i]表示以以i结尾的连续上升子序列长度,
dp[i] = (A[i]>A[i-1])?dp[i-1]+1:1,

其中还用到了贪心。

int longestIncreasingContinuousSubsequence(vector<int> &A) {
        // write your code here
    int n = A.size();
        if(n<1){ return 0;}
        if(n<2){return 1;}
        vector<int> dp1(n,1);
        vector<int> dp2(n,1);
        dp1[0] = dp2[0]=1;
        int glomax=0;
        for(int i=1;i<n;i++)
           {
            dp1[i] = (A[i]>A[i-1])?dp1[i-1]+1:1;
            dp2[i] = (A[i]<A[i-1])?dp2[i-1]+1:1;
            glomax = max(glomax,max(dp1[i],dp2[i]));
        }
        return glomax;
    }


原创粉丝点击