8.18周五
- 300.最长递增子序列
- 674. 最长连续递增序列
- 718. 最长重复子数组
详细布置
300.最长递增子序列
题目:求数组的不必连续的最长递增子序列
题解:
1、dp[i]表示以i为结尾的最长子序列的长度
2、dp[j]表示i之前的最长子序列长度
3、if (nums[i] > nums[j]) dp[i] = max(dp[i], dp[j] + 1);
注意这里不是要dp[i] 与 dp[j] + 1进行比较,而是我们要取dp[j] + 1的最大值。
674. 最长连续递增序列
题目:连续
题解:
1、要求连续则需要与i-1比较
2、初始化为1
3、最开始:
if (nums.size() == 0) return 0;
int result = 1;
718. 最长重复子数组
题目:两个数组的最长公共子序列(连续)
题解:
1、dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。
2、当A[i - 1] 和B[j - 1]相等的时候,dp[i][j] = dp[i - 1][j - 1] + 1;