LeetCode 第7天 动态规划 (子序列问题 二)编辑距离 python

2023-11-05

以下题目来来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/uncrossed-lines
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1035 不相交的线
在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。
现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:
nums1[i] == nums2[j]
且绘制的直线不与任何其他连线(非水平线)相交。
请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。
以这种方法绘制线条,并返回可以绘制的最大连线数。

class Solution:
    def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:
        #求不连续的公共最长子序列
        #d[i][j] 表示nums1 i位字符串之前和nums2 j位字符串之前的不连续的公共最长子序列
        #递推公式 if nums2[j-1]==nums1[i-1]: dp[i][j]=d[i-1][j-1]+1
        # else: d[i][j]=max(dp[i][j-1],d[i-1][j])
        dp=[[0]*(len(nums1)+1) for _ in range(len(nums2)+1)]
 
        for i in range(1,len(nums2)+1):
            for j in range(1,len(nums1)+1):
                if nums1[j-1]==nums2[i-1]: 
                    dp[i][j]=dp[i-1][j-1]+1
                else:
                    dp[i][j]=max(dp[i][j-1],dp[i-1][j])

        return dp[-1][-1]

115 不同子序列
编辑距离问题
给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。

字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)

题目数据保证答案符合 32 位带符号整数范围

class Solution:
    def numDistinct(self, s: str, t: str) -> int:
        #dp[i][j]表示 第i位之前的s拥有第j位之前的t的个数
        #递推关系 if s[i-1]!=t[j-1]: dp[i][j]=dp[i-1][j]
        #else: d[i][j]=dp[i-1][j-1]+dp[i-1][j] 用s[i-1]匹配 或者不用s[i-1]匹配
        dp=[[0]*(len(t)+1) for _ in range(len(s)+1)]

        for i in range(len(s)):
            dp[i][0]=1
        
        for i in range(1,len(s)+1):
            for j in range(1,len(t)+1):
                if s[i-1]==t[j-1]:
                    dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
                else:
                    dp[i][j]=dp[i-1][j]
        return dp[-1][-1]

583. 两个字符串的删除操作
给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。
每步 可以删除任意一个字符串中的一个字符。

class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        #dp[i][j] 使得第i位之前的word1与第j位之前的word2相同的最小操作数
        #递推关系:if word1[i-1]==word2[j-1]: dp[i][j]=dp[i-1][j-1]
        #else: dp[i][j]=min(dp[i-1][j],dp[i][j-1])
        dp=[[0]*(len(word2)+1) for _ in range(len(word1)+1)]
        for i in range(len(word1)+1):
            dp[i][0]=i
        for i in range(len(word2)+1):
            dp[0][i]=i
        
        for i in range(1,len(word1)+1):
            for j in range(1,len(word2)+1):
                if word1[i-1]==word2[j-1]: 
                    dp[i][j]=dp[i-1][j-1]
                else:  
                    dp[i][j]=min(dp[i-1][j-1]+2,dp[i-1][j]+1,dp[i][j-1]+1)
        return dp[-1][-1]

72 编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。

你可以对一个单词进行如下三种操作:

插入一个字符
删除一个字符
替换一个字符

class Solution:
    def minDistance(self, word1: str, word2: str) -> int:
        #dp[i][j]表示 i位之前的word1 变为j位之前的word2最少步数
        #递推公式 if word1[i-1]==word2[j-1]:  dp[i][j]=dp[i-1][j-1]
        # 删除和添加是一种情况word1删除或者word2删除 另一种是替换 else :dp[i][j]=min(dp[i-1][j-1]+1,dp[i-1][j]+1,dp[i][j-1]+1)
        dp=[[0]*(len(word2)+1) for _ in range(len(word1)+1)]
        for i in range(len(word1)+1):
            dp[i][0]=i
        for i in range(len(word2)+1):
            dp[0][i]=i
        for i in range(1,len(word1)+1):
            for j in range(1,len(word2)+1):
                if word1[i-1]==word2[j-1]:  dp[i][j]=dp[i-1][j-1]
                else: dp[i][j]=min(dp[i-1][j-1]+1,dp[i-1][j]+1,dp[i][j-1]+1)
        return dp[-1][-1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode 第7天 动态规划 (子序列问题 二)编辑距离 python 的相关文章

  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • 立体太阳图 matplotlib 极坐标图 python

    我正在尝试创建一个与以下类似的简单的立体太阳路径图 http wiki naturalfrequent com wiki Sun Path Diagram http wiki naturalfrequency com wiki Sun Pa
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • 从Python中的字典列表中查找特定值

    我的字典列表中有以下数据 data I versicolor 0 Sepal Length 7 9 I setosa 0 I virginica 1 I versicolor 0 I setosa 1 I virginica 0 Sepal
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • bnu1322 长方体表面积 C语言版

    北京师范大学珠海分校 Judge Online of ACM ICPC 1322 长方体表面积 C语言版 include
  • Retinex理论及算法学习

    为了能够获取最大的信息量 达到更好的图像增强效果 了解人类视觉系统的特性和图像的属性是准确地选择图像增强方法的必备知识 一 人眼视觉系统 1 人眼成像 人的眼睛是一个非常复杂的器官 一般来说它就是一个球体 平均直径约为20mm 内壁是一层视
  • web期末复习---老师划重点!!

    18 19级的web期末考试题都是老师出题 有幸在周一下午去听了老师的划重点的课 下面我把重点列出来供大家参考 可能不是特别全欢迎补充 谢谢 table 书P25 知道外边框 内边框及其各个属性 什么属性只显示上边框 什么属性只显示下边框等
  • Spring Boot 学习笔记

    TOC 一 Spring Boot 入门 1 Spring Boot 简介 简化Spring应用开发的一个框架 整个Spring技术栈的一个大整合 J2EE开发的一站式解决方案 2 微服务 2014 martin fowler 微服务 架构
  • Python 使用cv2模块 进入视觉识别的报错,报错信息为AttributeError: module ‘cv2.cv2‘ has no attribute ‘bgsegm

    Python 使用cv2模块 进入视觉识别的报错 报错信息为AttributeError module cv2 cv2 has no attribute bgsegm 问题描述 cv2模块 进入视觉识别的报错 报错信息为AttributeE
  • (一)pygame.event详细解析

    文章目录 pygame event详细解析 函数表 函数详解 pygame event pump pygame event get pygame event poll pygame event wait pygame event peek
  • Elasticsearch学习笔记(一) DSL语句

    1 index 1 1 查询所有index GET cat indices v 1 2 新增index 新增一个名为pigg的index PUT pigg 1 3 删除index 删除pigg这个index 产线千万别这么做 删了就完了 D
  • 【react从入门到精通】深入理解React生命周期

    文章目录 人工智能福利文章 前言 React技能树 React的生命周期是什么 React v16 0前的生命周期 组件初始化 initialization 阶段 组件挂载 Mounting 阶段 组件更新 update 阶段 组件销毁阶段
  • 2.4.8 Profile虚拟IO设备

    最后更新2021 07 21 虚拟IO设备由HMC发出配置信息 由Hypervisor创建 虚拟IO设备并非真实存在 只是一些Hypervisor的参数 所以通常你可以根据需要 任意增删虚拟IO设备 但是创建虚拟IO设备依然有一些规则需要遵
  • Vue3.0——vite项目搭建

    2021 10 26 因为技术不断更新 故有些命令行不是最新的 随着后期补丁的更新 部分错误后期可能不存在了 建议大家参照时间节点看本片文章 1 搭建vite项目 npm init vitejs app 2 npm init vitejs
  • 用rsync命令和scp命令实现本机带进度条提示拷贝

    rsync命令 rsync av progress mnt yidong2 full20100526 tar gz mnt yidong1 以上命令 可以实现本机带进度条提示拷贝 可以实现不同机器带进度条提示拷贝 可以拷贝多个文件 scp命
  • 在Ubuntu20.04安装单节点ClickHouse22.8.4并解决DB::NetException: Connection refused NETWORK_ERROR导致无法远程访问的问题

    在Ubuntu20 04安装单节点ClickHouse22 8 4并解决DB NetException Connection refused 192 168 88 22 9000 NETWORK ERROR 导致无法远程访问的问题 前言 参
  • git将项目的其他分支合并到自己的分支

    步骤1 查看本地的所有分支 如果有即将合并的分支 则跳到 步骤3 git checkout 他人的分支名 git branch 步骤2 查看所有分支 确定即将合并的分支名 git branch a 步骤3 检出即将合并的分支到你的本地 gi
  • js中的class类

    js中的class类 函数声明和类声明之间的一个重要区别是函数声明会提升 类声明不会 需要先进行声明 再去访问 否则会报错 var father new Father 我是爸爸 class Father constructor name t
  • 跑路了,去东北国企干软件测试一个月的感触

    前言 不知不觉入职新公司快一个月了 突然心血来潮想跟大家唠唠 在新公司上班的感受 有好有坏 喜忧参半吧 工作环境 我新入职的公司是哈尔滨的一家国企下的二级子公司 新成立的研发公司 目前还处于蓬勃发展的阶段 业务水准也算的上是不错了 目前人数
  • 笔记本计算机硬盘如何分盘,笔记本电脑怎样分盘_笔记本电脑如何自己分盘-win7之家...

    在购买笔记本电脑之后 很多用户没有考虑清楚就随便将磁盘分盘 之后发现磁盘不够用 所以就想要重新分盘 不过许多小伙伴可能还不知道笔记本电脑怎样分盘吧 方法并不难 我们可以进入到计算机的管理中进行操作 这就给大家讲述一下笔记本电脑自己分盘的详细
  • 秦朝的军功制度

    作者 李四郎 链接 https www zhihu com question 35082355 answer 126247488 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 二十级爵位可以按实际地位和待遇
  • 计算机视觉(十一):目标检测算法:R-CNN、Fast R-CNN、Faster R-CNN

    1 引言 在计算机视觉的发展中 我们的任务也越来越复杂 对于一张图像 我们不仅要实现对于目标的分类问题 还要准确的定位目标所在图片的位置 这个就是目标检测技术 在基于深度学习的目标检测技术中 就不得不提到最著名的三个算法了 R CNN Fa
  • 解决XML中符号解析问题

    当在xml中使用大于号 gt 小于号 lt 等字符时 会影响xml的解析 1 使用转义字符 lt lt 小于号 gt gt 大于号 amp 和 apos 单引号 quot 双引号 2 使用 被这个标记所包含的内容将表示为纯文本 比如表示文本
  • LeetCode 第7天 动态规划 (子序列问题 二)编辑距离 python

    以下题目来来源 力扣 LeetCode 链接 https leetcode cn problems uncrossed lines 著作权归领扣网络所有 商业转载请联系官方授权 非商业转载请注明出处 1035 不相交的线 在两条独立的水平线