当前位置: 首页 > 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.xdnf.cn/news/52507.html

相关文章:

  • Java的IO流 - 字节流和字符流
  • 测试新版oda teigha,开发webcad,实现在线查看dwg图纸
  • 哪个开源协议对用户最友好?开源协议对比
  • springboot自动装配的原理
  • Vite打包原理: Tree-shaking在Vue3项目中的实际效果
  • 浅聊docker的联合文件系统
  • get和post的区别
  • 基于 JavaWeb 的 SpringBoot 办公 ERP 管理系统设计与实现(源码+文档+部署讲解)
  • 1~4字节的CRC32非暴力破解,在线工具手工计算
  • 基于 Elasticsearch 8.12.0 集群热词实现
  • 大模型应用开发自学笔记
  • C++ 俄罗斯方块 | Tetris⚡YQW · Studio ⚡【无需下载图片】
  • 英式英语与美式英语的拼写差异
  • Cesium 地形加载
  • 如何部署MCP Sever【SSE通信方式】及调试
  • 从浏览器地址栏输入 URL 到网页显示,这中间发生了什么?
  • data_analysis29
  • seate TCC模式案例
  • 征程 6 VIO 通路断流分析
  • 基于FPGA的四层电梯设计系统设计和实现
  • 19年电赛D题硬件详解
  • C语言自增自减题目
  • 安全技术和防火墙
  • JVM 学习
  • SpringBoot集成Kafka详解
  • Python range 使用详解
  • P2505 [HAOI2012] 道路 Solution
  • 62页华为IPD-MM流程:市场调研理论与实践方案精读【附全文阅读】
  • Linux网络UDP与TCP
  • Matlab 五相电机仿真