算法训练营Day53(动态规划14)

news/2024/12/12 22:47:29/

1143.最长公共子序列 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

体会一下本题和 718. 最长重复子数组 的区别  

class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:# 创建一个二维数组 dp,用于存储最长公共子序列的长度dp = [[0] * (len(text2) + 1) for _ in range(len(text1) + 1)]# 遍历 text1 和 text2,填充 dp 数组for i in range(1, len(text1) + 1):for j in range(1, len(text2) + 1):if text1[i - 1] == text2[j - 1]:# 如果 text1[i-1] 和 text2[j-1] 相等,则当前位置的最长公共子序列长度为左上角位置的值加一dp[i][j] = dp[i - 1][j - 1] + 1else:# 如果 text1[i-1] 和 text2[j-1] 不相等,则当前位置的最长公共子序列长度为上方或左方的较大值dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])# 返回最长公共子序列的长度return dp[len(text1)][len(text2)]

 

1035.不相交的线 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

其实本题和 1143.最长公共子序列 是一模一样的,尝试自己做一做

class Solution:def maxUncrossedLines(self, nums1: List[int], nums2: List[int]) -> int:dp = [[0] * (len(nums2)+1) for _ in range(len(nums1)+1)]for i in range(1, len(nums1)+1):for j in range(1, len(nums2)+1):if nums1[i-1] == nums2[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])return dp[-1][-1]

53. 最大子序和 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

提醒

这道题我们用贪心做过,这次 再用dp来做一遍 

class Solution:def maxSubArray(self, nums: List[int]) -> int:dp = [0] * len(nums)dp[0] = nums[0]result = dp[0]for i in range(1, len(nums)):dp[i] = max(dp[i-1] + nums[i], nums[i]) #状态转移公式result = max(result, dp[i]) #result 保存dp[i]的最大值return result

 


http://www.ppmy.cn/news/1332989.html

相关文章

文献速递:人工智能医学影像分割--- 使用带有主动轮廓和CNN分类器的FCM对CT肺部图像进行分割

文献速递:人工智能医学影像分割— 使用带有主动轮廓和CNN分类器的FCM对CT肺部图像进行分割 01 文献速递介绍 肺是呼吸道中最重要的部分。肺的上呼吸道和下呼吸道是两个通道。身体的每个层面都需要氧气来维持健康生活。肺是位于我们胸部两个倒置的锥体中的海绵状、…

使用Python开发简单的聊天应用

使用Python开发一个简单的聊天应用。应用将允许多个用户之间进行实时文字聊天。 导入所需的库 首先导入一些构建该应用所需的Python库: import socket import select import errno import syssocket库用于网络通信select库用于实现异步I/Oerrno库将获取错误号sys库将提供一些…

音频格式之AAC:(3)AAC编解码原理详解

系列文章目录 音频格式的介绍文章系列: 音频编解码格式介绍(1) ADPCM:adpcm编解码原理及其代码实现 音频编解码格式介绍(2) MP3 :音频格式之MP3:(1)MP3封装格式简介 音频编解码格式介绍(2) MP3 :音频格式之MP3&#x…

Docker部署Golang服务

不管是开发还是生产环境,通过 docker 方式部署服务都是一种不错的选择,能够解决不同开发环境一致性的问题。 本文以项目:https://github.com/johncxf/go-api 为例。 Dockerfile 构建 Go 运用环境 在项目根目录下添加 Dockerfile 文件&…

网络组件、设备和关系网络图【推荐】

目录 网络上的设备: 设备和台式计算机: 防火墙: 服务器: 集线器和交换机: 路由器: 调制解调器和无线接入点调制解调器: 无线接入点: 网络架构(有时称为网络设计&…

每日一题——LeetCode2859.计算K置位下标对应元素的和

方法一 枚举法: 通过不断地将目标数值与 1 进行按位与操作,并根据结果判断最低位是否为 1,从而统计其中包含的 1 的个数。 如果1的个数等于K就加上该值。 var sumIndicesWithKSetBits function(nums, k) {function countOnes(num) {let cou…

力扣刷MySQL-第八弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

制造领域 物料清单(BOM)与零件明细表的区别

有许多人分不清物料清单(BOM)与零件明细表的区别,其实它们在企业的生产管理软件中起着不同的作用,各有各的特色,但是却有不尽相同。接下来我们就来区分一下吧 物料清单(BOM),是详细记录一个项目所用到的所有下阶材料及相关属性,亦即母件与所有子件的从属…