本文最后更新于 198 天前,如有失效请评论区留言。
天天写惯了记忆化搜索,来个递推DP就老实了(已老实, 求放过)
这类问题用递推很简单, 但是记忆化就不行了, 主要是这类题目需要存取两个字符, 很容易爆内存, 但是用递推就很容易想,容易通过.
- 数组中最长的方波 1480
- 最长定差子序列 1597
- 最长等差数列 1759
- 找出有效子序列的最大长度 II ~1850
- 最长的斐波那契子序列的长度 1911
- 等差数列划分 II – 子序列
- 最长字符串链
- 求出所有子序列的能量和 2553
比较通用且好写的是:枚举k,考察子序列的最后一项
https://leetcode.cn/problems/find-the-maximum-length-of-valid-subsequence-ii/description/
class Solution:
def maximumLength(self, nums: List[int], k: int) -> int:
ans = 0
for m in range(k):
f = [0] * k
for x in nums:
x %= k
f[x] = f[m - x] + 1
ans = max(ans, max(f))
return ans