算法训练营第47天|1143.最长公共子序列|1035.不相交的线|53. 最大子序和|392.判断子序列

1143.最长公共子序列

思路:这道题比较难理解的是递推公式,要想明白状态转换和各个状态的意义。

如果text1i - 1 与 text2j - 1相同,那么找到了一个公共元素,所以dpij = dpi - 1j - 1 + 1;

如果text1i - 1 与 text2j - 1不相同,那就看看text10, i - 2与text20, j - 1的最长公共子序列 和 text10, i - 1与text20, j - 2的最长公共子序列,取最大的。

复制代码
if(text1.charAt(i)==text2.charAt(j)) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);

1035.不相交的线

本题和 1143.最长公共子序列 是一模一样的

53. 最大子序和

1.初始化

dp0=nums0;
int max=dp0;

2.递推公式

复制代码
dp[i]=Math.max(nums[i], dp[i-1]+nums[i]);

392.判断子序列

1.初始化

只初始化第一行就行,因为第一列除了第一个,其余均为false,可以默认。

2.递推公式

复制代码
if(s.charAt(i)==t.charAt(j))
{
    if(dp[i-1][j-1]) dp[i][j]=true;
    else dp[i][j]=false;
}
else dp[i][j]=dp[i][j-1];

3.出错点

未想到特殊情况,即s或t为空串的情况,因为返回的是数组值,但是如果是空串就不会建立数组。

特殊情况特殊处理。

相关推荐
AgentMaster41 分钟前
数据资产化落地难题:5款数据中台系统架构对比与实施记录
大数据·人工智能·算法
鹿角片ljp1 小时前
从 Kimi Cyber Reasoning 学习网络安全推理数据集:从 Reasoning SFT 到安全 Agent 数据设计
数据结构·算法
residual_fan2 小时前
航空发动机故障诊断专用智能体(三):基于对比学习的时序特征区分方法
人工智能·算法·数据挖掘·数据分析
高亦真2 小时前
今天是学习嵌入式的第39天
linux·学习·算法
Omics Pro3 小时前
AI药物研发10原则!欧盟EMA×美国FDA
数据库·人工智能·算法·机器学习·自然语言处理
wabs6663 小时前
关于二叉树【力扣100.相同的树的思考】
数据结构·c++·算法·leetcode·二叉树·递归法
知知之之3 小时前
敏感数据查询:SHA-256 还是 HMAC-SHA256
算法
彧azz3 小时前
Java学习记录:判断语句
java·笔记·学习·算法
alphaTao3 小时前
LeetCode 每日一题 2026/9/14-2026/9/20
算法·leetcode
hanlin033 小时前
刷题笔记:力扣第560题-和为k的子数组
笔记·算法·leetcode