代码随想录Day57 |1143.最长公共子序列 1035.不相交的线 53. 最大子序和

算法训练day57leetcode1143.最长公共子序列 1035.不相交的线 53最大子序和 而是dp[6]。在回顾一下dp[i]的定义:包括下标i之前的最大连续子序列和为dp[i]。那么我们要找最大的连续子序列,就应该找每一个i为终点的连续最大子序列。所以在递推公式的时候,可以直接选出最大的dp[i]。 阅读详情

代码随想录Day57 |1143.最长公共子序列 1035.不相交的线 53. 最大子序和

1143.最长公共子序列

文档讲解:代码随想录
视频讲解: 动态规划子序列问题经典题目 | LeetCode:1143.最长公共子序列
状态

  1. dp数组
    dp[i][j] 表示 text1中0~i-1 与 text2中0~j-1,中公共子序列的长度
  2. 递推公式
    主要有两种情况

text1[i-1] == text2[j-1] 那么 dp[i][j] = dp[i-1][j-1]+1
text1[i-1] != text2[j-1] 那么 dp[i][j] = max(dp[i-1][j],dp[i][j-1])

  1. 初始化
    最开始公共的字符串子序列都为0
  2. 遍历顺序
    从前向后
  3. 打印dp
class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        if(text1.size() == 0 || text2.size() == 0) return 0;

        vector<vector<int>> dp(text1.size()+1,vector<int>(text2.size()+1,0));

        for(int i = 1;i<=text1.size();i++)
        {
            for(int j = 1;j<text2.size()+1;j++)
            {
                if(text1[i-1] == text2[j-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[text1.size()][text2.size()];
    }
};

1035.不相交的线

文档讲解:代码随想录
视频讲解: 动态规划之子序列问题,换汤不换药 | LeetCode:1035.不相交的线
状态

不相交的线其实就是公共子序列相连的线,所以也是一个找最大公共子序列的问题

//公共的子序列就不会相交
class Solution {
public:
    int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
        if(nums1.size()==0||nums2.size()==0) return 0;
        vector<vector<int>> dp(nums1.size()+1,vector<int>(nums2.size()+1,0));
        for(int i = 1;i<nums1.size()+1;i++)
        {
            for(int j=1;j<nums2.size()+1;j++)
            {
                if(nums1[i-1] == nums2[j-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[nums1.size()][nums2.size()];
    }
};

53.最大子序和

文档讲解:代码随想录
视频讲解: 看起来复杂,其实是简单动态规划 | LeetCode:53.最大子序和
状态

  1. dp数组
    dp[i] nums从0到i的最大连续子数组和
  2. 递推公式
    dp[i]只有两种情况由前面的最大和加上当前的数,或者从当前的数重新开始
    dp[i] = nums[i] 或者 dp[i-1]+nums[i]
  3. 初始化
    dp[0] = nums[0]
  4. 遍历顺序
    从前向后
  5. 打印dp
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        if(nums.size() == 0) return 0;
        vector<int> dp(nums.size());
        dp[0] = nums[0];
        int res = dp[0];
        for(int i = 1;i<nums.size();i++)
        {
            dp[i] = max(nums[i],dp[i-1]+nums[i]);
            if(res < dp[i])
            {
                res = dp[i];
            }
        }
        return res;
    }
};

注意此题同样的是最终结果不一定是在最后一个位置,因为中间可能有最大和的连续子数组出现

GROMACS自由能景观图绘制全流程:从PCA分析到Origin 3D可视化(附避坑指南) 本文详细解析了使用GROMACS绘制自由能景观图的全流程,涵盖从PCA分析、数据预处理、自由能计算到最终在Origin中进行3D可视化的完整步骤。文章重点分享了数据处理与格式转换中的常见“避坑”指南,帮助研究者从分子动力学轨迹中有效提取并解读构象自由能信息,深化对生物大分子动力学过程的理解。 阅读详情

相关推荐

LM358实战:手把手教你搭建电流检测电路(附电阻选型计算)

本文详细解析了使用LM358运算放大器搭建电流检测电路的全过程,包括基础原理、采样电阻选型、放大电路设计及PCB布局技巧。通过实战案例和精确计算,帮助工程师快速掌握低成本、高精度的电流检测方案,适用于电源管理、电机控制等多种应用场景。

weixin_30872157的博客 448

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

拿示例一A = [1,4,2], B = [1,2,4]为例,其实也就是说A和B的最长公共子序列是[1,4],长度为2。这个公共子序列指的是相对顺序不变(即数字4在字符串A中数字1的后面,那么数字4也应该在字符串B数字1的后面)思路:直线不能相交,这就是说明在字符串A中 找到一个与字符串B相同的子序列,且这个子序列不能改变相对顺序,只要相对顺序不改变,链接相同数字的直线就不会相交。思路:在递推方程与求公共数组的几乎类似,但是不同的是本题要求的公共序列不需要元素的连续,所以当s[i]!

旭 541

WIN10环境下STK11.5(含Analyzer, EOIR, Scheduler插件)的安装与破解全攻略

本文提供了一份详细的WIN10环境下STK11.5软件及其核心插件(Analyzer, EOIR, Scheduler)的安装与破解全攻略。内容涵盖从安装包准备、系统环境检查,到基础版安装、插件部署、破解文件替换及许可证配置的完整步骤,并附有常见问题排错指南,旨在帮助用户免费搭建功能齐全的卫星仿真分析环境。

solidity8miner的博客 756

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

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]

sunflowers11的博客 609

LVDS系列11:Xilinx Ultrascale系可编程输入延迟(一)

按照IDELAYCTRL的参考时钟频率可以准确计算获取到,如200M参考时钟抽头分辨率为78ps,Ultrascale系列相对于7系列架构大改,体现便是U/U+系列的抽头增加到512个,同时每个抽头的分辨率就无法像7系列那样能得到一个准确的值,是一个波动的范围值,抽头分辨率随着工艺温度电压的变化而变化。EN_VTC:电压温度补偿开启的使用信号,COUNT模式下不能使用,必须保持为0,TIME模式下需要使用,在延迟工作时要启用温度电压补偿,在修改抽头值时需要关闭温度电压补偿,修改完后启用;

weixin_38828382的博客 1940

反激变压器反射电压详解

我以前做过隔离式的POE模块,其电路实际就是个反激式开关电源。只不过其输入电压范围比较低,为44V-57V。 电路如下图,就是个flyback。 可以看到,电路中有个钳位电路,用来抑制电压尖峰,就在初级线圈那里。 问题 抑制尖峰通常有2种电路,一种叫RCD钳位,另外一种是用TVS管+二极管钳位。 这两种实际中都有用,今天我不想讨论它们的区别,只想说明一个问题: 为什么不能只用一个二极管搞定?像继电器电路那样?不也能抑制尖峰吗? 答案自然是不行的...

weixin_42005993的博客 2万+

代码随想录算法训练营Day57|LeetCode1143最长公共子序列、LeetCode1035不相交的线、LeetCode53最大子序和

LeetCode1143最长公共子序列。LeetCode1035不相交的线。LeetCode53最大子序和。

m0_66412823的博客 305

RedHat 9 替换yum源镜像

引言:我们个人通常使用的红帽系统yum源是需要注册付费的,所以在使用yum源安装一些软件时无法正常安装(例如:MySQL),这时我们就需要将yum源替换为CentOS对应的源,以实现在红帽系统中正常安装软件。

YUJIAOZHU666的博客 3738

【Day57】代码随想录之动态规划part14——最长公共子序列、不相交的线、最大子序列和

今天晚上的第二弹,动态规划走起!!!

格子格鸽的个人博客 652

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟

《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标

qq_41525079的博客 1142

【图像拼接】源码精读:Parallax-Tolerant Unsupervised Deep Image Stitching(UDIS++)

注:Pytorch代码。【图像拼接论文精读】专栏对应文章【图像拼接】论文精读:Parallax-Tolerant Unsupervised Deep Image Stitching(UDIS++)配合对应的文章阅读,效果更佳!注:请重点关注代码段中的注释!!!有一些讲解的东西直接写在代码段的注释中了,同时多关注红色字体和绿色字体!!!我认为深度学习方法和传统方法有很多相似之处。比如:深度学习中的损失函数和传统方法中的对齐项、失真项等其实原理相同,只是求解方式不同。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7272

【Day57】代码随想录之动态规划_1143最长公共子序列_1035不相交的线_53最大子数组和

根据dp[i][j]的含义,为什么是表示text1中[0, i-1]和text2中[0, j-1]的最长公共子序列,而不是[0, i] 和 [0, j]。因为刚开始初始化dp[i][0], dp[j][0]如果是后者,则初始化需要让text1的第一个元素和text2的所有元素对比更新dp[0][j],同样用text2的第一个元素和text1的所有元素比较是否相等更新dp[i][0]。这次的dp[i][j]中i和j分别表示text1和text2,是一个比较新的思路,两个数组的状态用二维数组的行和列表示。

weixin_46275441的博客 1063

Ubuntu零基础教学-史上最详Ubuntu20.04安装教程,超级详细,强烈建议收藏!

官网地址:https://www.vmware.com/ 1、VMware Workstation Pro 15.5.1在Windows 10的安装不再介绍了,一路下一步即可。 2、下面详细介绍在VMware 虚拟机里安装Ubuntu 20.04 LTS的步骤

**My Coding Family** 2万+

day57 动态规划part14 (1143. 最长公共子序列1035. 不相交的线53. 最大子数组和)

/ dp[i] 代表以 i 结尾的数组最大的连续子数组和,注意以nums【i】结尾,必须包含nums【i】i < len;

weixin_43889767的博客 1088

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

代码随想录题解 Day 57 | 最长重复子数组 No.718 | 最长公共子序列 No.1143 | 不相交的线 No.1035 | 最大子数组和 No.53

又是一个关于子数组的题目,子数组也就代表着连续,这样就代表着状态中必须包含以什么为 结尾。所以本题中的状态就可以初步确定为以 nums[i] 为结尾的数组的最大的总和。

kkq的博客 734

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

代码随想录训练营Day 57|力扣1143.最长公共子序列、1035.不相交的线、53. 最大子数组和 动态规划

思路:这道题和昨天的求两个数组的最长重复子数组很像,这道题的区别在于它不像前一道题那样要求所求的公共元素是连续的。而且两个题的dp数组的定义也不一样,前一道题明确要求以i-1和j-1作为结尾的最长重复子数组,所以我们不能保证最后一个元素一定是dp数组中最大的(因为必须以i-1和j-1为结尾,会丢弃一些长度更长的结果。所以要用result保存)dp数组的含义:dp[i][j]表示下标为0~i-1和0~j-1字符串的最长公共子序列的长度。注意到了吗,只是求这两个字符串的最长公共子序列,

weixin_64434454的博客 598

VC中sqlite的使用

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

day57|● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

动态规划

qerwtrt4t的博客 664

算法训练营 day57 动态规划 最长公共子序列 不相交的线 最大子序和(动态规划)

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

qq_54343969的博客 310

代码随想录算法训练营第36期DAY57

想起来了,是贪心算法,sum<0会减小后一位数字,因此continue;同时记录过程中的maxres.记得记录过程中的最大值,并且注意res的初值。分析法和上一题的图片一样。今天的好消息:能去华五。

illuosion7的博客 1168

代码随想录算法训练营29期Day57|LeetCode 1143,1035,53

dp

tlingyuqi的博客 958

DAY 57 动态规划

dp[i][j]:text1中前i个元素和text2中前j个元素的最长公共子序列dp[i]:nums[0]~nums[i]的最大和的连续子数组的和。

weixin_45845722的博客 329

随想录Day57 | 1143.最长公共子序列 1143.最长公共子序列 53. 最大子序和

重复子串专题。

weixin_44645059的博客 408

@ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长公共子序列为dp[i][j]。与上题一致。dp[i]:包括下标i(以nums[i]为结尾)的最大连续子序列和为dp[i]。连续的就得包括结尾元素,不连续就不需要了。

fu1034810010的博客 472

Day 57 | 动态规划 1143.最长公共子序列、 1035.不相交的线、 53. 最大子序和 动态规划

【代码】Day 57 | 动态规划 1143.最长公共子序列、 1035.不相交的线、 53. 最大子序和 动态规划。

m0_46554918的博客 428

day57 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

53. 最大子序和 动态规划。1035.不相交的线。1143.最长公共子序列。

m0_58298553的博客 321

训练营打卡Day57

训练营打卡Day57

hhk166的专栏 770
上一篇: 代码随想录Day56 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
下一篇: 代码随想录Day58 | 392.判断子序列 115.不同的子序列
sRiddle
博客等级 码龄7年 528粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值