代码随想录算法训练营第五十三天丨1143.最长公共子序列、1035. 不相交的线、53. 最大子数组和

基于STM32的HC-SR04超声波模块测距(新手级) 本人是嵌入式新手,学习了STM32的部分内容,最近想找些项目做,然后顺便学习了一下HC-SR04超声波模块,学习过程中也参考了一些大佬的文章。本文记录了自己的学习方法和学习过程,同时也希望能和各位大佬交流讨论。 阅读详情

1143. 最长公共子序列

LCS春节刷过了,算法导论书上的例题。

class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:

        n1, n2 = len(text1), len(text2)
        dp = [[0] * (n2 + 1) for _ in range(n1 + 1)]
        
        for i in range(1, n1 + 1):
            for j in range(1, n2 + 1):
                if text1[i - 1] == text2[j - 1]:
                    dp[i][j] = dp[i - 1][j - 1] + 1
                else:
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
        
        return dp[n1][n2]

1035. 不相交的线

一模一样...如果不是这样的刷题顺序,这个题可能毫无头绪

class Solution:
    def longestCommonSubsequence(self, text1: str, text2: str) -> int:

        n1, n2 = len(text1), len(text2)
        dp = [[0] * (n2 + 1) for _ in range(n1 + 1)]
        
        for i in range(1, n1 + 1):
            for j in range(1, n2 + 1):
                if text1[i - 1] == text2[j - 1]:
                    dp[i][j] = dp[i - 1][j - 1] + 1
                else:
                    dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
        
        return dp[n1][n2]

53. 最大子数组和

这个题其实就是股票第一题..

也是算法导论分治法里面的例题

先给分治法解法:

分治:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        # 辅助函数,用于找出跨越中点的最大子数组和
        def findMaxCrossingSubarray(nums, left, mid, right):
            # 左半边的最大子数组和
            left_sum = float('-inf')
            sum = 0
            for i in range(mid, left-1, -1):
                sum += nums[i]
                if sum > left_sum:
                    left_sum = sum
            
            # 右半边的最大子数组和
            right_sum = float('-inf')
            sum = 0
            for i in range(mid + 1, right + 1):
                sum += nums[i]
                if sum > right_sum:
                    right_sum = sum
            
            # 返回跨越中点的最大子数组和
            return left_sum + right_sum
        
        # 主递归函数
        def maxSubArrayRec(nums, left, right):
            # 基本情况
            if left == right:
                return nums[left]
            
            mid = (left + right) // 2
            # 分别找到左半边、右半边和跨越两边的最大子数组和
            left_sum = maxSubArrayRec(nums, left, mid)
            right_sum = maxSubArrayRec(nums, mid + 1, right)
            cross_sum = findMaxCrossingSubarray(nums, left, mid, right)
            
            # 返回这三个中的最大值
            return max(left_sum, right_sum, cross_sum)
        
        return maxSubArrayRec(nums, 0, len(nums) - 1)

动规:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        n = len(nums)
        dp = [0] * n
        dp[0] = nums[0]
        for i in range(1, n):
            dp[i] = max(dp[i - 1] + nums[i], nums[i])
        return max(dp)

今日总结:

今天的题其实挺难的,春节期间被折磨了两天。但是一旦不是一刷,就变简单了好多,可见刷题重要性。

YOLOv11 改进 - 注意力机制 | Deformable-LKA 可变形大核注意力:自适应采样网格优化特征捕捉,提升不规则目标感知 本文介绍了可变形大核注意力(D-LKA Attention)及其在YOLOv11中的结合。D-LKA Attention是一种简化的注意力机制,采用大卷积核利用体积上下文信息,通过可变形卷积灵活调整采样网格,适应多样数据模式。它有2D和3D版本,3D版本在跨深度数据理解上表现出色,共同构成了D-LKA Net架构。我们将D-LKA Attention集成进YOLOv11,在模型的检测头部分引入deformable_LKA_Attention模块。实验表明,该方法在分割任务上表现优于现有方法,提升了模型的检测 阅读详情

相关推荐

OCCT(Open CASCADE Technology)入门-2.搭建开发环境

安装完成后,在【扩展】菜单下会看到【Qt VS Tools】菜单,打开子菜单【options】进入qt配置窗口。打开VS后随便创建一个新项目,进入开发环境主页,打开顶部菜单【扩展】->【管理扩展】打开管理扩展窗口。然后点击右下角【创建】,一路【next】即可,最后会进入到开发主界面,得到一个下面的工程结构。好了,到这里基本的环境我们已经安装好了,下面我们开始创建项目并配置开发环境。打开顶部菜单【项目】,点击最后一个菜单项【xxx属性】,进入项目配置界面。这里的配置一般不用改,我们看【Versions】

2501_91235145的博客 2875

代码随想录算法训练营第44天|1143. 最长公共子序列、1035.不相交的线、53. 最大子数组和、392.判断子序列

(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。🍬局部最优:当前“连续和”为负数的时候立刻放弃,从下一个元素重新计算“连续和”,因为负数加上下一个元素 “连续和”只会越来越小。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。如果s和t的子序列长度等于s的长度,就代表s是t的子序列。

郭小儒的博客 1417

别再用Python卷了!用Matlab的Deep Learning Toolbox快速上手U-Net图像分割(附完整数据集处理代码)

本文介绍了如何使用Matlab的Deep Learning Toolbox快速上手U-Net图像分割,包括数据准备、网络构建、训练监控和模型应用等完整流程。Matlab的高度集成工具链和图形化界面为图像分割任务提供了更快捷、直观的解决方案,特别适合研究人员和工程师快速实现原型验证。

weixin_29927965的博客 381

代码随想录算法训练营第53天 |1143.最长公共子序列 1035.不相交的线 53. 最大子序和 动态规划

而是dp[6]。在回顾一下dp[i]的定义:包括下标i之前的最大连续子序列和为dp[i]。那么我们要找最大的连续子序列,就应该找每一个i为终点的连续最大子序列。所以在递推公式的时候,可以直接选出最大的dp[i]。

Laulian的博客 2418

ROS2中间件选型指南:FastDDS与CycloneDDS零拷贝机制对比与实战

在机器人开发中,通信中间件是连接分布式节点的核心纽带,其性能直接影响系统的实时性与可靠性。DDS作为ROS2默认的通信标准,通过发布订阅模型和QoS策略,为高频大带宽场景提供了灵活的数据分发能力。并行计算与高性能传输的需求,推动了零拷贝技术的演进——从传统序列化到共享内存乃至指针传递,旨在减少数据复制开销、降低延迟。在激光雷达点云、相机图像等场景下,中间件的选型尤为关键。FastDDS凭借与ROS2的深度集成和丰富文档成为入门首选,而CycloneDDS在低延迟和资源占用上表现更优,借助iceoryx实现了

weixin_28726391的博客 252

PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)

该篇是学习使用PYNQ开发板,实际上是对ZYNQ PL端AXI_CDMA 核的应用。实验步骤参照官网的教程,一步一步地做,但是由于在硬件资源布置方面与官方教程稍有出入,所以在SDK的源码里也进行了修改。 AXI_CDMA特性: 如果是使用ZYNQ 7系列芯片(可能其他Xilinx也是通用的),xilinx的AXI_CDMA 核有两种传输模式:轮询(poll)和中断(...

YGLeeeon的博客 3521

代码随想录算法训练营Day49 | 1143. 最长公共子序列、1035.不相交的线、53. 最大子数组和、392.判断子序列

训练营第49天:1143. 最长公共子序列、1035.不相交的线、53. 最大子数组和、392.判断子序列

jiabao0520的博客 1272

LCD驱动芯片——BL55072A驱动程序

初始化子程序: START 0x7C; I2C子地址 0xEA;ICSET,软件复位芯片 0xC0;MODSET,关显示 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8;ICSET,清复位bit1 STOP 显示刷新子程序: START 0x7C;I2C子地址 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8或0xEC;ICSE

love421的博客 3175

代码随想录算法训练营第day53|1143.最长公共子序列 、 1035.不相交的线、 53. 最大子序和 动态规划

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。思路:dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j];即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

qq_60513199的博客 1158

手把手教你用Apple Developer App完成苹果开发者账号注册(含证件验证失败解决方案)

本文详细指导如何通过Apple Developer App完成苹果开发者账号注册,特别针对证件验证失败问题提供解决方案。从准备工作到注册流程,再到验证失败的处理方法,帮助开发者顺利完成注册,避免常见错误。

moss5的博客 1157

气体放电管GDT选型解析

气体放电管(GDT)是电子设备电磁兼容设计中应对浪涌防护的核心器件,具有高能量吸收能力(10kA以上)和低漏电流特性。其工作原理分为击穿、导通和熄弧三阶段,通过电离气体泄放浪涌能量。GDT适用于雷击等大能量防护,但响应较慢(0.1-0.3μs),需搭配TVS/MOV组成多级防护。选型需匹配击穿电压(如220VAC系统选800V型号),并注意续流风险。典型应用包括电源端口、通信防雷模块的三极管共模防护或GDT-MOV串联方案,实现能量分流与快速钳位平衡。

硬核科技 208

代码随想录算法训练营第五十三天 | LeetCode 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和

dp 数组的初始化:从递推公式可看出,i,j 是需要这三个方向推导出来的,因此要把第一行和列初始化了,即 dp[0][j] 和 dp[i][0],那么根据 dp 数组的含义,是跟 [0,i-1] 和 [0,j-1] 比较,本来就是 0 了再减 1 就成负的,就是一个空的字符串的,那么即 nums1 和空的字符串的最长公共子序列以及 nums2 和空的字符串的最长公共子序列就应该是 0,因此都初始化为 0。中的重复子数组要求是连续的,本题也是要求重复子数组,要按照数组的顺序,虽然可以不连续。

Hsusan的博客 303

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1058

代码随想录算法训练营Day53|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

本题与上一题最长公共子数组类似,只是上一题要求连续,而本题没有这个要求。本题的难点在于审题,要把题目想要表达的意思理解了,要明白题目的本质就是要求最长公共子序列。上一次遇到本题还是在贪心算法的章节,利用贪心算法巧妙地实现,这次利用动态规划的方法进行求解。今天主要还是练习子序列问题,明天继续,早日结束动态规划专题!

m0_68682181的博客 1332

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

代码随想录算法训练营第三十八天

本文总结了LeetCode中的几道经典动态规划与回溯算法题目,包括最长公共子序列、不相交的线、最大子数组和、判断子序列以及找出3位偶数。每道题目都提供了问题描述、解题思路、复杂度分析以及代码实现。最长公共子序列和不相交的线问题通过动态规划解决,最大子数组和问题采用贪心或动态规划,判断子序列问题则通过顺序匹配或动态规划实现。最后,找出3位偶数问题通过回溯算法解决。这些题目涵盖了动态规划和回溯算法的核心思想,适合算法学习者深入理解与应用。

岁岁安的博客 1568

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

代码随想录算法训练营第四十四天 | 1143.最长公共子序列 1035.不相交的线 53.最大子序和 392.判断子序列

此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];(2)如果text1[i - 1]与text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列,取最大的。同理dp[0][j]也是0。

m0_50413530的博客 851

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

代码随想录算法训练营第四十四天 | 1143.最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列

文档讲解:https://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C%EF%BC%88%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%EF%BC%89.html。文档讲解:https://programmercarl.com/1143.%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.html。

m0_45175414的博客 852

代码随想录算法训练营第44天 | LeetCode1143.最长公共子序列、 LeetCode1035.不相交的线、LeetCode53.最大子数组和、LeetCode392.判断子序列

给定两个字符串text1和text2,返回这两个字符串的最长的长度。如果不存在,返回0。一个字符串的是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。"ace""abcde""aec""abcde"两个字符串的是这两个字符串所共同拥有的子序列。思路:昨天讲了一个,求的是连续的子序列。而这道题求的是最长公共子序列,也就是说序列是非连续的。

m0_68237332的博客 1206

代码随想录算法训练营第五十三天|1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和。

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

eternaappiness的博客 1010

代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。输入:nums1 = [2,5,1,2,5], nums2 = [10,5,2,1,5,2]输入:nums1 = [1,3,7,1,7,5], nums2 = [1,9,2,5,1]输入:nums1 = [1,4,2], nums2 = [1,2,4]著作权归领扣网络所有。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]

2303_76761642的博客 620

代码随想录算法训练营第三十八天 | 1143.最长公共子序列、1035.不相交的线、53. 最大子数组和、392.判断子序列

代码随想录算法训练营第三十八天 | 1143.最长公共子序列、1035.不相交的线、53. 最大子数组和、392.判断子序列

dewi的博客 642

代码随想录算法训练营第四十九天|1143. 最长公共子序列,1035. 不相交的线,53. 最大子数组和,392. 判断子序列

t[j - 1]),此时相当于t要删除元素,t如果把当前元素t[j - 1]删除,那么dp[i][j] 的数值就是 看s[i - 1]与 t[j - 2]的比较结果了,即:dp[i][j] = dp[i][j - 1];if (s[i - 1] == t[j - 1]),那么dp[i][j] = dp[i - 1][j - 1] + 1;但无法画出第三条不相交的直线,因为从 nums1[1]=4 到 nums2[2]=4 的直线将与从 nums1[2]=2 到 nums2[1]=2 的直线相交。

weixin_43270226的博客 976

代码随想录算法训练营day53 | 1143.最长公共子序列,1035.不相交的线,53. 最大子序和 动态规划

3、dp初始化:dp[0]没有实际意义,为保证递归,初始化为0,其余索引值都会在递归时被覆盖无需考虑。3、dp初始化:dp[i][0]和dp[0][j]没有实际意义,为保证递归,全部初始化为0。3、dp初始化:dp[i][0]和dp[0][j]没有实际意义,为保证递归,全部初始化为0。2、递归公式:dp[i]=nums[i-1]+Math.max(dp[i-1], 0);1、dp[i]含义:以nums[i-1]为结尾的最大连续子数组和。1、dp[i][j]含义:表示以text1从。4、遍历顺序:正向遍历。

2301_77450803的博客 1126

代码随想录算法训练营第四十四天|1143最长公共子序列、1035不相交的线、53最大子序和、392判断子序列

如果要求的子数组,所以dp[i]表示的应当是子序列的最大子序和,一定要第i个元素。这也就意味着,最终结果应该取的是,而不是最后一个元素。如果要求的是的子序列,那么dp[i]第i个元素,最终结果应该取dp数组的。

2302_80777118的博客 908

代码随想录训练营第53天|1143.最长公共子序列,1025.不相交的线,53.最大子数组和

思路能一下看到七八分,但是从dp[i][j-1]和dp[i-1][j]中找最大值并没有第一时间想到。

qq_44120129的博客 410

代码随想录算法训练营第五十三天 | 力扣 1143.最长公共子序列, 1035.不相交的线, 53. 最大子序和

动态规划

weixin_42424955的博客 630
上一篇: 代码随想录算法训练营第五十二天丨300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
下一篇: 代码随想录算法训练营第五十四天丨392. 判断子序列、115. 不同的子序列
LIEBESFREUD
博客等级 码龄9年 372粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值