力扣子序列问题总结

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,不相交的线  :

  与上一题一致,找不连续的相同字串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值