leetcode718. 最长重复子数组

一:题目

在这里插入图片描述

二:上码

class Solution {
public:/**思路:1.分析题意:1  2  3  6  7  41  2  6  7  4  3这里我们先遇到的1 2 但后来我们又遇见了6 7 4 那么我们的要的答案就是动态变化的2.动态规划五步走1>:确定dp数组以及下标的含义dp[i][j] 表示 以下标i-1结尾的A数组和以下标j-1结束的B数组的  最长重复子数组长度这里我们用i-1和j-1 主要是考虑当我们比较最后一个元素的时候即: dp[i][j] = dp[i-1][j-1] + 1;//如果最后一个元素相等的话 那么//dp[i-1][j-1]表示的是我们累加的最后一个元素2>:确定dp数组的状态递推公式在这个组成的二维矩阵中  我们是需要 左上角的值进行累加  因为我们是要求的是连续的长度所以 dp[i][j] = dp[i-1][j-1] + 1;//dp[i-1][j-1] 就是左上角的值3>:确定dp数组的初始化初始化为0即可4>确定dp数组的遍历顺序外层A数组  内层B数组5>:举例验证dp数组下标范围  0  1  2  3  4  5数组下标范围     0  1  2  3  4   1  2  3  2  10  0  0  0  0  03  0  0  0  1  0  02  0  0  1  0  2  01  0  1  0  0  0  34  0  0  0  0  0  07  0  0  0  0  0  0我们之所以将dp数组的范围扩大一位  是因为我们求取第一个值相等的时候  需要用到dp[i-1][j-1]也就是左上角的值,所以我们扩大一位那么与之一块改变的还需注意的是 我们dp数组下标的含义  我们都是从i-1和j-1来说的  只有这样我们才能和num1,num2数组下标对应上例如本题的结果  dp[3][5] 表示的就是以下标2结尾的num2数组和以下标4结尾的num1数组 最长的重复子数组*/int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int> >dp(nums1.size()+1,vector<int>(nums2.size()+1,0));int ans = 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] > ans) ans = dp[i][j];}}return ans;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307630.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)

297. 二叉树的序列化与反序列化&#xff08;剑指 Offer 37. 序列化二叉树&#xff09;&#xff08;剑指 Offer II 048. 序列化与反序列化二叉树&#xff09; class Codec:def serialize(self, root):"""Encodes a tree to a single string.:type root: TreeNod…

.NET 5 的 Target Framework 详解[上篇]

❝作者&#xff1a;.NET Team翻译&#xff1a;精致码农-王亮原文&#xff1a;http://dwz.win/Q4v❞我们希望极大地简化开发人员必须在项目文件和 NuGet 包中使用的「TFM」 (Target Framework Name, 目标框架名称)。这包括合并 .NET 5 和 .NET Standard 的概念&#xff0c;同时仍…

leetcode1143. 最长公共子序列

一&#xff1a;题目 二:上码 class Solution { public:/**思路:1.分析题意这个子序列就是我们是可以不连续的字符组成的2.动态规划五步走1>:确定dp数组的含义以及下标的含义dp[i][j] 表示的是text1中[0,i-1]字符范围,text2中[0,j-1]的字符范围 的最长公共子序列这里我们取i…

爬楼梯与路径类题目记忆化递归与动态规划双解法(Leetcode题解-Python语言)

70. 爬楼梯&#xff08;剑指 Offer 10- II. 青蛙跳台阶问题&#xff09; 递归&#xff08;英语&#xff1a;Recursion&#xff09;&#xff0c;是指在函数的定义中使用函数自身的方法。有意义的递归通常会把问题分解成规模缩小的同类子问题&#xff0c;当子问题缩写到寻常的时…

JAVA 15发布,越来越像C# ?9月排名,C#增幅狠甩JAVA

2016年.NET Core首个正式版本问世&#xff0c;如今已发布到了.NET Core3.1&#xff0c;再有2个月.NET5也将如约而至&#xff0c;跨平台开发已经快5年。微软 .NET 程序管理总监 Scott 表示&#xff0c;.NET 5 是 .NET Framework 和 .NET Core 的未来&#xff0c;最终将成为一个统…

买卖股票类问题动态规划解法(Leetcode题解-Python语言)

在 Leetcode 中&#xff0c;关于买卖股票的问题共有6道&#xff0c;而这些题目是可以用相同的思维进行求解的&#xff0c;强烈推荐这篇总结&#xff0c;写得非常到位。 股票类问题的动态规划分三步走&#xff0c;1、首先明确方程的含义&#xff0c; T[i][k][0]&#xff1a;表…

leetcode1035. 不相交的线

一:题目 二:上码 class Solution { public:/**思路:1.分析题意:这里的我们要求解的是最大值,那么我们的求解过程肯定是动态变化的,举个例子2 5 1 2 510 5 2 1 5 2 如果我们一开始就让nums1[1] 5何 nums2[4] 5 相连的话 那么我们肯定不会求解出最大值那么题目中的说的直线不…

几个超级实用但很少人知道的 VS 技巧[更新]

大家好&#xff0c;今天分享几个我知道的实用 VS 技巧&#xff0c;而这些技巧我发现很多人都不知道。因为我经常在工作中遇到&#xff1a;我在同事电脑上解决问题&#xff0c;或在会议上演示代码示例时&#xff0c;使用了一些 VS “骚”操作&#xff0c;他们会好奇地问&#xf…

一般动态规划问题合集(Leetcode题解-Python语言)

118. 杨辉三角 class Solution:def generate(self, numRows: int) -> List[List[int]]:dp [[0] * i for i in range(1, numRows1)]for i in range(numRows):for j in range(len(dp[i])):# 左右两边是1&#xff0c;中间部分就是其上方两个数之和if j 0 or j i:dp[i][j] …

leetcode53. 最大子数组和(动态规划)

一:题目 二:上码 class Solution { public:int maxSubArray(vector<int>& nums) {/**动态规划:1>:确定dp数组的含义以及下标的含义dp[j]表示的是下标j之前的最大子数组和 这个就是还没有包括nums[j] 2>:确定dp数组的状态转移公式dp[j] max (dp[j-1]nums[j],n…

矩阵模拟问题合集(Leetcode题解-Python语言)

54. 螺旋矩阵&#xff08;剑指 Offer 29. 顺时针打印矩阵&#xff09; class Solution:def spiralOrder(self, matrix: List[List[int]]) -> List[int]:ans []count 0m, n len(matrix), len(matrix[0])length m * ndirections [(0, 1), (1, 0), (0, -1), (-1, 0)]x y…

基于REACT和.NET CORE集成WINDOWS身份验证

有很多方法可以向您的应用程序添加身份验证。虽然OAuth是最常见的一种&#xff0c;但这并不是您唯一的选择。今天&#xff0c;我将向您展示如何通过React和.NET Core简单地完成Windows身份验证。探索我们的选择在深入探讨之前&#xff0c;让我们简要讨论一些可用的其他选项。了…

.NET Core加解密实战系列之——使用BouncyCastle制作p12(.pfx)数字证书

简介加解密现状&#xff0c;编写此系列文章的背景&#xff1a;需要考虑系统环境兼容性问题&#xff08;Linux、Windows&#xff09;语言互通问题&#xff08;如C#、Java等&#xff09;&#xff08;加解密本质上没有语言之分&#xff0c;所以原则上不存在互通性问题&#xff09;…

快速幂算法相关题目(Leetcode题解-Python语言)

50. Pow(x, n) 快速幂算法的目的&#xff0c;就是快速计算 x 的 n 次方。基本思路是把 n 视作二进制数&#xff0c;则 n 可以被分解为多个 2 的幂次方之和&#xff0c;如 12 对应 1100 等于 0∗200∗211∗221∗230*{2^0} 0*{2^1} 1*{2^2} 1*{2^3}0∗200∗211∗221∗23&…

leetcode115. 不同的子序列

一&#xff1a;题目 二:代码 class Solution { public:/**思路:动规分析走一波1>:确定dp数组以及下标的含义dp[i][j] 表示的是 以下标i-1结尾的子序列s中出现以j-1结尾的子序列t的 个数2>:确定dp数组的状态递推公式这里考虑两种状况 一种就是 s[i-1] s[j-1] 一种就是字…

栈的基础概念与经典题目(Leetcode题解-Python语言)

栈是先入后出&#xff08;后入先出&#xff09;的数据结构&#xff0c;常用操作就 push 和 pop&#xff0c;Python中用列表实现即可&#xff0c;基本概念可以看Leetbook相关章节。 普通栈 232. 用栈实现队列 class MyQueue:def __init__(self):self.stack1 []self.stack2 …

ASP.NET Core 3.x启动时运行异步任务(二)

这一篇是接着前一篇在写的。如果没有看过前一篇文章&#xff0c;建议先去看一下前一篇&#xff0c;这儿是传送门一、前言前一篇文章&#xff0c;我们从应用启动时异步运行任务开始&#xff0c;说到了必要性&#xff0c;也说到了几种解决方法&#xff0c;及各自的优缺点。最后&a…

leetcode583. 两个字符串的删除操作

一:题目 二:上码 class Solution { public:/**思路:题目给的是让求最值,那么首先就会想到的是动态规划,我们想得到答案的结果其实有多个的&#xff0c;但是我们是取最小的步数动态规划 五步走:1>:确定dp数组以及下标的含义dp[i][j]表示的是 以下标i-1结尾的字符串word1,和…

C# 中居然也有切片语法糖,太厉害了

一&#xff1a;背景 1. 讲故事昨天在 github 上准备找找 C# 9 又有哪些新语法糖可以试用&#xff0c;不觉在一个文档上看到一个很奇怪的写法: foreach (var item in myArray[0..5]) 哈哈&#xff0c;熟悉又陌生&#xff0c;玩过python的朋友对这个 [0..5] 太熟悉不过了&#x…

子串、子数组与子序列类型问题的动态规划求解(Leetcode题解-Python语言)

一般来说&#xff0c;子串和子数组都是连续的&#xff0c;而子序列是可以不连续的&#xff0c;遇到子序列问题基本上都是用动态规划求解。 53. 最大子数组和&#xff08;剑指 Offer 42. 连续子数组的最大和&#xff09; class Solution:def maxSubArray(self, nums: List[int…