718. 最长重复子数组 1143.最长公共子序列1035.不相交的线

news/2025/2/13 3:17:27/

718. 最长重复子数组

两种dp定义不同,初始化不同

注意二者的if语句

第一种(以i-1结尾) if ( nums1[i - 1] == nums2[j - 1] ) dp[i][j] = dp[i - 1][j - 1] + 1;

第二种(以i结尾)  if ( nums1[i] == nums2[j] ) dp[i][j] = dp[i - 1][j - 1] + 1;

class Solution {
public:
//dp[i][j] 以i - 1 结尾的nums1 以 j - 1 结尾的nums2 相同的最大长度int findLength(vector<int>& nums1, vector<int>& nums2) {int result = 0;vector<vector<int>> dp(nums1.size() + 1 , vector<int> (nums2.size() + 1 , 0));for ( int i = 1 ; i <= nums1.size() ; i++ ) {for ( int j = 1 ; j <= nums2.size() ; j++ ) {if ( nums1[i - 1] == nums2[j - 1] ) dp[i][j] = dp[i - 1][j - 1] + 1;if ( dp[i][j] > result ) result = dp[i][j];}}return result;}
};
class Solution {
public:
//dp[i][j] 以i 结尾的nums1 以 j 结尾的nums2 相同的最大长度int findLength(vector<int>& nums1, vector<int>& nums2) {int result = 0;vector<vector<int>> dp(nums1.size() , vector<int> (nums2.size() , 0));for ( int i = 0 ; i < nums1.size() ; i++ ) if ( nums2[0] == nums1[i] ) {dp[i][0] = 1;result = 1;}for ( int j = 0 ; j < nums2.size() ; j++ ) if ( nums1[0] == nums2[j] ) {dp[0][j] = 1;result = 1;} for ( int i = 1 ; i < nums1.size() ; i++ ) {for ( int j = 1 ; j < nums2.size() ; j++ ) {if ( nums1[i] == nums2[j] ) dp[i][j] = dp[i - 1][j - 1] + 1;if ( dp[i][j] > result ) result = dp[i][j];}}return result;}
};

1143.最长公共子序列

注意if 中是 i - 1;

这里不用要求是连续,所以dp【i】【j】 不管是否相等,都要继承前面的,也就有了else中的dp【i】【j】 = max(dp[i][j - 1] , dp[i - 1][j]);

class Solution {
public:
//dp[i][j] 以【0,i-1】的text1 和 【0,j-1】的text2 的最长公共子序列的长度int longestCommonSubsequence(string text1, string text2) {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() ; 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.不相交的线

此题与上一题  1143.最长公共子序列 只是题目描述不同

解法一样

class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {
//dp[i][j] 以【0,i-1】的text1 和 【0,j-1】的text2 的最长公共子序列的长度vector<vector<int>> dp( nums1.size() + 1 , vector<int> (nums2.size() + 1 , 0));for ( int i = 1 ; i <= nums1.size() ; i++ ) {for ( int j = 1 ; j <= nums2.size() ; 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()];}
};


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

相关文章

虹科案例 | PLC如何应用于建筑的3D打印?

客户&#xff1a;Rebuild 合作伙伴&#xff1a;ASTOR 应用&#xff1a;用于建筑的大尺寸3D打印 应用产品&#xff1a;3D混凝土打印机 &#xff08;一&#xff09;应用背景 自从20世纪80年代以来&#xff0c;增材制造技术&#xff08;即3D打印&#xff09;不断发展。大部分3D打印…

c++特殊类的设计

不能被拷贝的类 只能在堆上创建对象的类 只能在栈上创建对象的类 不能被继承的类 只能创建一个对象的类 一.不能被拷贝的类 c11之前&#xff0c;可以将拷贝构造和赋值重载私有化c11之后&#xff0c;可以将在后面delete class CopyBan {CopyBan(const CopyBan& CB) del…

Docker容器映射Redis和MySQL到本地

Docker容器因其快速、轻量级、可移植性、隔离性和安全性、可弹性扩展等诸多特性&#xff0c;在程序交付和部署的时候使用非常广泛。但是容器中数据无法持久化,当容器关闭或者删除的时候其中的数据就会丢失。所以很多时候我们会将Docker中的数据目录挂载到本地, 实现程序数据的持…

百度网盘加速下载

下载网页插件可搜索各种奇葩工具 Tampermonkey 在线解析连接&#xff1a;https://api.94speed.com/web/ 工具下载&#xff1a;https://motrix.app/zh-CN/download 解析完成后发送到&#xff1a;motrix

机器学习:异常检测

问题定义 anomaly&#xff0c;outlier&#xff0c; novelty&#xff0c; exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据&#xff0c;而异常的数据的范围非常广的话&#xff08;无法穷举&#xff09;&#xff0c;二分类这些不好做。另外就…

改造升级autoPOI以满足poi5.0.0及以上版本

因为nbcio-boot项目用到了poi5.0.0&#xff0c;但本身我看autoPOI现在只能支持poi4.12&#xff0c;所以需要改造这个jar&#xff0c;以便使用&#xff0c;随便也上传一下到maven中央库里去。 主要如下&#xff1a; 1、POM父文件修改成自己的版本&#xff0c;同时根据上传maven…

基于Jonswap谱的随机波高及波压力生成

内容目录 基于Jonswap谱的随机波高及波压力生成基于Jonswap谱的随机波高及波压力生成 海面高程可视为是平稳高斯随机过程,可通过对波浪谱确定的一系列分量波进行叠加得到。JONSWAP谱是在海洋结构设计和分析中常用的波浪频谱,可以用其来模拟随机波浪。 式中:有义波高H1/3和…

SQL SERVER使用发布订阅同步数据库遇到的坑

可能遇到的各种坑 1.在执行 xp_cmdshell 的过程中出错。调用 ‘CreateProcess’ 失败&#xff0c;错误代码: ‘5’ 网上有各种解决办法&#xff0c;包括改本地安全策略&#xff0c;将sql server服务的网络权限改为本机系统&#xff0c;改cmd用户的读写权限&#xff0c;退出360…