LC300 LCS

int lengthOfLIS(vector<int>& nums) {
    int len=nums.size();
    int dp[len];
    int list[len];//记录序列下标
    vector<int> v;
    for(int i=0;i<len;i++){
        dp[i]=1;
        list[i]=i;
    }
    /*
        找nums[i]之前最长的序列
    */
    for(int i=1;i<len;i++){
        for(int j=0;j<i;j++){
            if(nums[i]>nums[j]){
                if(dp[j]+1>dp[i]){
                    dp[i]=dp[j]+1;
                    list[i]=j;//记录上一个最长序列的下标
                }
                //dp[i]=max(dp[i],dp[j]+1);
            }
        } 
    }
    int ans=0;
    int pos=0;
    for(int i=0;i<len;i++){
        if(dp[i]>ans){
            ans=dp[i];
            pos=i;
        }
       // ans=max(ans,dp[i]);
    }
    
    while(pos!=list[pos]){
       v.push_back(nums[pos]);
       pos=list[pos];  
    }
    v.push_back(nums[pos]);
    reverse(v.begin(),v.end());

    return ans;
}
posted @   lwx_R  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示