leetcode hot100 1143. 最长公共子序列 mediuim 递归优化


递归优化 @cache

每个算一次:状态数 = m × n , 时间复杂度 = O(m × n)

空间复杂度 O(m × n)

python 复制代码
class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:

        # 可以跳着选(不连续),但顺序不能变
        @cache
        def dfs(i, j):
            # 任意一个走到头
            if i == len(text1) or j == len(text2):
                return 0
            
            # 相等 → 一起走
            if text1[i] == text2[j]:
                return 1 + dfs(i + 1, j + 1)
            
            # 不等 → 各走一步,取最大
            return max(
                dfs(i + 1, j),   # 跳过 text1[i]
                dfs(i, j + 1)    # 跳过 text2[j]
            )
        
        return dfs(0, 0)  # 两个指针 i, j:两个数组都从0开始走
相关推荐
Liangwei Lin1 小时前
LeetCode 118. 杨辉三角
算法·leetcode·职场和发展
YL200404263 小时前
047从前序与中序遍历序列构造二叉树
算法·leetcode
如竟没有火炬6 小时前
字符串相乘——int数组转字符串
开发语言·数据结构·python·算法·leetcode·深度优先
YL200404269 小时前
046二叉树展开为链表
数据结构·leetcode·链表
如竟没有火炬11 小时前
至少有K个重复字符的最长子串
开发语言·数据结构·python·算法·leetcode·动态规划
水蓝烟雨12 小时前
2359. 找到离给定两个节点最近的节点
算法·leetcode
阿Y加油吧12 小时前
二刷动态规划经典题:从打家劫舍到完全平方数,Java 实现复盘与优化
leetcode
阿Y加油吧12 小时前
二刷 LeetCode:爬楼梯与杨辉三角,Java 实现复盘
java·算法·leetcode
凌波粒12 小时前
LeetCode--101. 对称二叉树(二叉树)
算法·leetcode·职场和发展
_深海凉_12 小时前
LeetCode热题100-二叉树的最大深度
算法·leetcode·职场和发展