leetcode 718. 最长重复子数组
难度:中等
频次:53
题目:给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。
解题思路:动态规划
注意:
- 为什么使用动态规划?---->求最值,并且跟之前的状态有关
- 这道题跟1143 最长公共子序列 很类似,本质上差不多,之间的区别其实是这道题数字必须是连续的,但是公共子序列可以是单个的char组合在一起
- 所以本质上来说这道题更简单,只有上面那道题的一般,正如其状态转移方程也只是相等的时候相同,不相等的时候直接为0,但是默认为0,直接不操作
- 而需要注意的是 刚刚那道题由于有严格的大小关系,最后的那个dp[m][n]一定是最大的,但是这道题不是,最后的 那个dp[m][n]也可以是0,所以需要用一个res用来存储最大值。
代码:
class Solution {public int findLength(int[] nums1, int[] nums2) {int n=nums1.length,m=nums2.length;//new int 需要注意,并且我们dp是从1开始的//为什么是从1开始的?很多人说这样子比较方便//但实际上是由状态转移方程决定的,因为跟之前的有关。所以这里必须长度多1个,再加上我们思维是从1开始的int[][] dp=new int[n+1][m+1];//dp[i][j] 代表的是第一个长度为i,第二个长度为j的最长公共子串长度//这里的最初状态其实时dp[1][0]=0, dp[1][0]这里就不写了int res=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){//状态转移方程主要有两条if(nums1[i-1]==nums2[j-1]){//如果最后两个元素相等,那么整体的dp=去掉相等元素的dp值+1dp[i][j]=dp[i-1][j-1]+1;}//不相等直接为0res=Math.max(res,dp[i][j]);}}return res;}
}
leetcode 718. 最长重复子数组相关推荐
- Java实现 LeetCode 718 最长重复子数组(动态规划)
718. 最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释 ...
- LeetCode·718.最长重复子数组·动态规划
链接:https://leetcode.cn/problems/maximum-length-of-repeated-subarray/solution/-by-xun-ge-v-5he0/ 来源:力 ...
- LeetCode 718最长重复子数组
题目链接:力扣 子序列默认不连续,子数组默认连续 思路: 动态规划: 定义dp数组: dp ...
- LeetCode 718. 最长重复子数组(DP)
1. 题目 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的 ...
- 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)
步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是长度为i的A数组和长度为j的B数组公共的长度最长的子数组的长 度. 步骤二.推断状态方程: 考虑下dp[i][j], 因为这里的子数 ...
- 每日题解:LeetCode 718. 最长重复子数组
题目地址 个人博客地址 题目描述 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释 ...
- LeetCode 718 最长重复子数组
给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. A: [1,2,3,2,1] B: [3,2,1,4,7] 数组+长度,这种问题看来很多都可以采用二分搜索算法,因为长度有 ...
- 2022-2-1 leetcode.718.最长重复子数组
别人的做法 int findLength(vector<int>& A, vector<int>& B) {int len1 = A.size(), len2 ...
- leetcode(力扣) 718. 最长重复子数组 1143. 最长公共子序列 1035. 不相交的线 (动态规划)
文章目录 718. 最长重复子数组 题目描述 思路分析 完整代码 1143. 最长公共子序列 1035. 不相交的线: 这三道题思路基本一样,尤其是最后两道,代码都一样,一点不需要改的,所以放一起把. ...
最新文章
- Python numpy 提取矩阵的某一行或某一列
- 如何用深度学习做自然语言处理?这里有份最佳实践清单
- Postman 使用详解
- git add remote_收藏向 | Git命令与原理速查手册
- c#下简单的文件读写
- [汇编语言]实验三:栈和栈段
- 使用akka构建高并发程序_如何使用Akka Cluster创建简单的应用程序
- .net java 开源_为什么说微软开源 .net 也拼不过 java?
- python运算符有哪些_python中算数运算符都有哪些
- 解含待定变量微分方程组
- 马云:成功与情商有关 与读书多少关系不大
- Mysql text类型的最大长度
- java 局部内部类
- c#读取文本文件出现乱码
- mac过热_如何阻止Mac过热
- asyncawait的前世今生
- Loj一本通刷题记录
- Hyper-v安装和使用
- 02 BGP地址聚合
- 深入理解Golang之Map
热门文章
- ubuntu dotnet core run 十月第一弹
- 今天是周一,又是热的天气笼罩。
- Single-Shot Object Detection with Enriched Semantics
- 提高Python运行效率的6大技巧!
- Android环境下通过C框架层控制WIFI【转】
- 改变textFiled中placeholder的字体颜色的方法以及不想光标在textView的最左边设置方法...
- 部署 Communicator Web Access
- Powershell 自定义输出列,两个例子
- 安卓Android科大讯飞语音识别代码使用详解
- SpringMVC下的基本配置