其他分享
首页 > 其他分享> > 动态规划:300、最长递增子序列

动态规划:300、最长递增子序列

作者:互联网

思路:最值的求取一般都是使用动态规划,我们首先求取以i结尾的最长子序列,然后求出最大值。

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
        int n=nums.size();
        //每一位的子序列长度为1
        vector<int>dp(n+1,1);
        for(int i=0;i<nums.size();i++){
            for(int j=0;j<i;j++){
                //只有大于时才更新以i结尾的子序列值
                if(nums[i]>nums[j])
                    dp[i]=max(dp[i],dp[j]+1);
            }
        }
        int res=0;
        for(int i=0;i<dp.size();i++){
            res=max(res,dp[i]);
        }
        return res;
    }
};

 

标签:nums,300,递增,int,求取,序列,动态,dp
来源: https://blog.csdn.net/carolineme/article/details/111356428