LeetCode 300最长递增子序列_递增子序列

 题目链接:力扣s

 思路:动态归划

定义dp数组:设 dp[i] 是以nums[i]结尾的最大递增子序列的长度

状态转移方程:dp[i]=max{dp[j]}+1,当nums[i]>nums[j],0<=j<i

出口: dp[0]=1

LeetCode 300最长递增子序列_算法_02

class Solution {
public:
    int lengthOfLIS(vector<int>& nums) {
vector<int>dp(nums.size());

//注意nums为0的情况
if(nums.size()==1)
return 1;
dp[0]=1;
int max_length=0;
for(int i=1;i<nums.size();i++)
{
    int max_l=0;
    for(int j=0;j<i;j++)
    {
        if(nums[j]<nums[i])
        max_l=max(max_l,dp[j]);
    }
    dp[i]=max_l+1;
    max_length=max(max_length,dp[i]);
}
return max_length;
    }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.