1,单个数组,查找不连续的递增序列:
300,最长递增子序列 :给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。
示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。
不连续的递增序列:
dp[i]表示i之前包括i的最长上升子序列的长度。
i与0到(i-1)的值比较,如果i比j大,就在dp[j](j的最长上升序列)加1,
然后取所有dp[i]的最大值
注意:大于才加入,且要保存全局的最大值
2,单个数组,查找连续 递增序列
674,最长连续递增序列 :给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。
dp[i]表示i之前包括i的最长上升子序列的长度。
If(n[i]>n[i-1]) Dp[i]=dp[i-1]+1
初始值为1,保存全局最大值
3,两个数组,找连续相同的字串
718. 最长重复子数组 :给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。
示例:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释: 长度最长的公共子数组是 [3, 2, 1] 。
两个数组,找连续相同
dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。
二维数组中,当前两个元素相同,且前一个元素也必须相同
Dp[i][j]=dp[i-1][j-1]+1
4,两个数组,找不连续的相同字串
1143,最长公共子序列 :给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。
两个数组,找不连续的相同字符串
dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]
如果i-1与j-1相等,则直接相同的字符串数目加1
Dp[i][j]=dp[i-1][j-1]+1
如果不相等,则取[0,i-1]与[0,j-2]或[0,i-2]与[0,j-1]的最大公共序列
Dp[i][j]=max(dp[i][j-1],dp[i-1][j])
1035,不相交的线 :
与上一题一致,找不连续的相同字串