当前位置: 首页 > news >正文

代码随想录算法训练营Day45

力扣115.不同的子序列【hard】
力扣583.两个字符串的删除操作【medium】
力扣72.编辑距离【medium】

一、力扣115.不同的子序列【hard】

题目链接:力扣115.不同的子序列
在这里插入图片描述
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 在这里插入图片描述
  • 在这里插入图片描述
  • 时间复杂度: O ( n ∗ m ) O(n * m) O(nm)

2、代码

class Solution:def numDistinct(self, s: str, t: str) -> int:m, n = len(s), len(t)@cachedef dfs(i:int, j:int) -> int:if j < 0:return 1if i < j :return 0res = dfs(i - 1, j)if s[i]  == t[j]:res += dfs(i - 1, j - 1)return resreturn dfs(m - 1, n - 1)
class Solution:def numDistinct(self, s: str, t: str) -> int:m, n = len(s), len(t)if m < n:return 0f = [[1] + [0] * n for _ in range(m + 1)]for i, x in enumerate(s):for j, y in enumerate(t):f[i + 1][j + 1] = f[i][j + 1]if s[i] == t[j]:f[i + 1][j + 1] += f[i][j]return f[m][n]

在这里插入图片描述

class Solution:def numDistinct(self, s: str, t: str) -> int:m, n = len(s), len(t)if m < n:return 0f = [1] + [0] * nfor i, x in enumerate(s):for j in range(min(n - 1, i), max(0,n - m + i) - 1, -1):if x == t[j]:f[j + 1] += f[j]return f[n]

二、力扣583.两个字符串的删除操作【medium】

题目链接:力扣583.两个字符串的删除操作
在这里插入图片描述
视频链接:代码随想录

1、思路

  • 和1143一致
  • 时间复杂度: O ( m ∗ n ) O(m * n) O(mn)

2、代码

class Solution:def minDistance(self, word1: str, word2: str) -> int:m, n = len(word1), len(word2)@cachedef dfs(i:int, j:int) -> int:if i < 0 or j < 0:return 0if word1[i] == word2[j]:return dfs(i - 1, j - 1) + 1else:return max(dfs(i - 1, j), dfs(i, j - 1))return m + n - 2 * dfs(m - 1, n - 1) 
class Solution:def minDistance(self, word1: str, word2: str) -> int:m, n = len(word1), len(word2)f = [[0] * (n + 1) for _ in range(m + 1)]for i, x in enumerate(word1):for j, y in enumerate(word2):if x == y:f[i + 1][j + 1] = f[i][j] + 1else:f[i + 1][j + 1] = max(f[i][j + 1], f[i + 1][j])return m + n - 2 * f[m][n]
class Solution:def minDistance(self, word1: str, word2: str) -> int:m, n = len(word1), len(word2)f = [0] * (n + 1) for x in word1:pre = 0for j, y in enumerate(word2):tmp = f[j + 1]if x == y:f[j + 1] = pre + 1else:f[j + 1] = max(f[j + 1], f[j])pre = tmpreturn m + n - 2 * f[n]

三、力扣72.编辑距离【medium】

题目链接:力扣72.编辑距离
在这里插入图片描述
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 三个操作对应的状态要想明白
  • 还有初值条件的转换
  • 时间复杂度: O ( n ) O(n) O(n)

2、代码

class Solution:def minDistance(self, word1: str, word2: str) -> int:n,m = len(word1), len(word2)   @cachedef dfs(i:int, j:int) -> int:if i < 0:return j + 1if j < 0 :return i + 1if word1[i] == word2[j]:return dfs(i - 1, j - 1)return min(dfs(i - 1, j), dfs(i, j -1), dfs(i - 1, j - 1)) + 1return dfs(n - 1, m - 1)
class Solution:def minDistance(self, word1: str, word2: str) -> int:n,m = len(word1), len(word2)f = [[0] * (m + 1) for _ in range(n + 1)]f[0] = list(range(m + 1))for i, x in enumerate(word1):f[i + 1][0] = i + 1for j, y in enumerate(word2):if x == y:f[i + 1][j + 1] = f[i][j]else:f[i + 1][j + 1] = min(f[i][j], f[i + 1][j], f[i][j +1]) + 1return f[n][m]
class Solution:def minDistance(self, word1: str, word2: str) -> int:n,m = len(word1), len(word2)f = list(range(m + 1))for  x in word1:pre = f[0]f[0] += 1for j, y in enumerate(word2):tmp = f[j + 1]if x == y:f[j + 1] = preelse:f[j + 1] = min(pre, f[j], f[j +1]) + 1pre = tmpreturn f[m]

http://www.xdnf.cn/news/286957.html

相关文章:

  • 一个电商场景串联23种设计模式:创建型、结构型和行为型
  • Cordova开发自定义插件的方法
  • 多语言笔记系列:Polyglot Notebooks 中使用 xUnit 单元测试
  • WebAssembly(Wasm):现代Web开发的超级加速器
  • Spring Boot 之MCP Server开发全介绍
  • Linux | WEB服务器的部署及优化
  • 山东大学项目实训-创新实训-法律文书专家系统-项目报告(三)
  • 推特逆向算法,推特爬虫,数据分析,推特关键词搜索
  • C# 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • AI小智本地前后端部署
  • Web Workers 技术详解与最佳实践
  • Kubernetes(k8s)学习笔记(七)--KubeSphere 最小化安装
  • webpack 的工作流程
  • 备忘录模式(Memento Pattern)
  • 56.[前端开发-前端工程化]Day03-webpack构建工具
  • Windows11 VS code 安装 Cline 调用 Github MCP 配置过程坑点汇总
  • 深入探索 51 单片机:从入门到实践的全面指南
  • ctfshow——web入门361~368
  • 电脑怎么分屏操作?
  • Gradio全解20——Streaming:流式传输的多媒体应用(5)——基于WebRTC的摄像头实时目标检测
  • N-Gram 模型
  • 慢sql处理流程和常见案例
  • Webug4.0靶场通关笔记16- 第20关文件上传(截断上传)
  • 数据结构——算法复杂度
  • 部署GM DC Monitor 一体化监控预警平台
  • Python 整理3种查看神经网络结构的方法
  • 3DGS-slam:splatam公式
  • 开源模型应用落地-qwen模型小试-Qwen3-8B-推理加速-vLLM(一)
  • Git 标签管理
  • 【STM32 学习笔记】GPIO输入与输出