1、题目描述
https://leetcode-cn.com/problems/longest-increasing-subsequence
2、解题思路
2.1 DP动态规划
根据题意。我们可以发现,下标i处的最长上升子序列长度与前面下标的最长上升子序列长度有关。 比如nums[i]>nums[j] 那么 此时i位置的最长上身子序列长度等于 j位置最长序列长度+1;
动态规划五部曲:
1、dp[i]的含义:
dp[i]表示从0~i下标范围内的最大上升子序列的长度;
2、状态转移
位置i处的最长上升子序列的长度 等于j从0到i-1的各位置的最长上升序列长度+1,那么此时针对dp[i]的子序列长度就有i-1组,我们需要再选出最大的作为下标i的最大子序列长度
for(int j=0;j<i;j++){
if(num[i]>num[j]) {
dp[i] =Math.max(dp[i] ,dp[j]+1) //注意这里不是要dp[i] 与 dp[j] + 1进行比较,而是我们要取dp[j] + 1的最大值。
}