最长递增子序列
dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度
状态转移方程的含义:位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 + 1 的最大值。
最长连续递增序列
dp[i]:以下标i为结尾的连续递增的子序列长度为dp[i]。
如果 nums[i] > nums[i - 1],那么以 i 为结尾的连续递增的子序列长度 一定等于 以i - 1为结尾的连续递增的子序列长度 + 1 。
即:dp[i] = dp[i - 1] + 1;
也就是不需要两重循环来穷举
因为递增的条件剪掉了很多
这里下标从0开始 相应的判断稍作调整
dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。
特别注意: “以下标i - 1为结尾的A” 标明一定是 以A[i-1]为结尾的字符串
在遍历dp[i][j]的时候i 和 j都要从1开始。
其实定义成当前位置开始也可以 这里是为了方便进行初始化
只需要初始化为0就行(也就是在java中不需要进行额外的初始化操作)
滚动数组版本