当前位置: 首页 > news >正文

leetcode 1035. Uncrossed Lines

题目描述

本题本质上就是求nums1和nums2的最长公共子序列的长度。因此本题本质上与第1143题一模一样。

代码:

class Solution {
public:int maxUncrossedLines(vector<int>& nums1, vector<int>& nums2) {//本题等价于求nums1和nums2的最长公共子序列的长度int len1 = nums1.size();int len2 = nums2.size();//i的取值范围是[1,len1]//j的取值范围是[1,len2]//dp[i][j]表示nums1[0,i-1]和nums2[0,j-1]的最长公共子序列的长度//dp[0][j]表示nums1为空,此时不存在公共子序列,dp[0][j]都应该等于0//dp[i][0]表示nums2为空,此时不存在公共子序列,dp[i][0]都应该等于0//i!=0 且 j!=0时,有两种可能://如果nums1[i-1]等于nums2[j-1],dp[i][j]=dp[i-1][j-1]+1,dp[i][j]由前面的dp[i-1][j-1]覆盖,可以不初始化,或者为了编码方便可以统一初始化为0//如果nums1[i-1]不等于nums2[j-1],dp[i][j]=max(dp[i-1][j],dp[i][j-1]),dp[i][j]由前面的dp[i-1][j]或者dp[i][j-1]覆盖,可以不初始化,或者为了编码方便可以统一初始化为0vector<vector<int>> dp(len1+1,vector<int>(len2+1,0));for(int i = 1;i <= len1;i++){for(int j =1;j <= len2;j++){if(nums1[i-1] == nums2[j-1])dp[i][j] = dp[i-1][j-1] +1;elsedp[i][j] = max(dp[i-1][j],dp[i][j-1]);}}return dp[len1][len2];}
};
http://www.dtcms.com/a/144239.html

相关文章:

  • css3新特性第三章(文本属性)
  • AI Agent破局:智能化与生态系统标准化的颠覆性融合!
  • 【技术派后端篇】Redis实现统计计数
  • JavaScript 性能优化
  • 【数据分析实战】使用 Matplotlib 绘制散点图
  • 第一讲 生成式ai是什么
  • 深度解析算法之前缀和
  • Linux命令-Shell编程
  • 深入剖析 Java Web 项目序列化:方案选型与最佳实践
  • k8s 基础入门篇之开启 firewalld
  • 低代码行业研究报告
  • ClickHouse简介
  • AI日报 - 2025年04月19日
  • 网络基础(协议,地址,OSI模型、Socket编程......)
  • Linux网络编程 TCP---并发服务器:多进程架构与端口复用技术实战指南
  • GO语言入门:常用数学函数2
  • TCVectorDB 向量数据库简介
  • K8s-Pod详解
  • 操作系统是如何运行的?
  • 2014-2021年 区域经济高质量发展-高质量需求指标数据
  • 【Hot100】 240. 搜索二维矩阵 II
  • 微信小程序中使用h5页面预览图片、视频、pdf文件
  • 软考复习——知识点软件开发
  • 深入理解Java包装类:自动装箱拆箱与缓存池机制
  • Linux操作系统--进程的创建和终止
  • 缓存 --- Redis的三种高可用模式
  • 重构之去除多余的if-else
  • Kubernetes相关的名词解释Dashboard界面(6)
  • 年化26.9%的稳健策略|polars重构因子计算引擎(python策略下载)
  • 03【变量观】`let`, `mut` 与 Shadowing:理解 Rust 的变量绑定哲学