难度:中等
频次: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. 最长重复子数组相关推荐

  1. Java实现 LeetCode 718 最长重复子数组(动态规划)

    718. 最长重复子数组 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释 ...

  2. LeetCode·718.最长重复子数组·动态规划

    链接:https://leetcode.cn/problems/maximum-length-of-repeated-subarray/solution/-by-xun-ge-v-5he0/ 来源:力 ...

  3. LeetCode 718最长重复子数组

    题目链接:力扣                                                子序列默认不连续,子数组默认连续 思路: 动态规划: 定义dp数组:         dp ...

  4. LeetCode 718. 最长重复子数组(DP)

    1. 题目 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的 ...

  5. 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是长度为i的A数组和长度为j的B数组公共的长度最长的子数组的长 度. 步骤二.推断状态方程: 考虑下dp[i][j], 因为这里的子数 ...

  6. 每日题解:LeetCode 718. 最长重复子数组

    题目地址 个人博客地址 题目描述 给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. 示例:输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出:3 解释 ...

  7. LeetCode 718 最长重复子数组

    给两个整数数组 A 和 B ,返回两个数组中公共的.长度最长的子数组的长度. A: [1,2,3,2,1] B: [3,2,1,4,7] 数组+长度,这种问题看来很多都可以采用二分搜索算法,因为长度有 ...

  8. 2022-2-1 leetcode.718.最长重复子数组

    别人的做法 int findLength(vector<int>& A, vector<int>& B) {int len1 = A.size(), len2 ...

  9. leetcode(力扣) 718. 最长重复子数组 1143. 最长公共子序列 1035. 不相交的线 (动态规划)

    文章目录 718. 最长重复子数组 题目描述 思路分析 完整代码 1143. 最长公共子序列 1035. 不相交的线: 这三道题思路基本一样,尤其是最后两道,代码都一样,一点不需要改的,所以放一起把. ...

最新文章

  1. Python numpy 提取矩阵的某一行或某一列
  2. 如何用深度学习做自然语言处理?这里有份最佳实践清单
  3. Postman 使用详解
  4. git add remote_收藏向 | Git命令与原理速查手册
  5. c#下简单的文件读写
  6. [汇编语言]实验三:栈和栈段
  7. 使用akka构建高并发程序_如何使用Akka Cluster创建简单的应用程序
  8. .net java 开源_为什么说微软开源 .net 也拼不过 java?
  9. python运算符有哪些_python中算数运算符都有哪些
  10. 解含待定变量微分方程组
  11. 马云:成功与情商有关 与读书多少关系不大
  12. Mysql text类型的最大长度
  13. java 局部内部类
  14. c#读取文本文件出现乱码
  15. mac过热_如何阻止Mac过热
  16. asyncawait的前世今生
  17. Loj一本通刷题记录
  18. Hyper-v安装和使用
  19. 02 BGP地址聚合
  20. 深入理解Golang之Map

热门文章

  1. ubuntu dotnet core run 十月第一弹
  2. 今天是周一,又是热的天气笼罩。
  3. Single-Shot Object Detection with Enriched Semantics
  4. 提高Python运行效率的6大技巧!
  5. Android环境下通过C框架层控制WIFI【转】
  6. 改变textFiled中placeholder的字体颜色的方法以及不想光标在textView的最左边设置方法...
  7. 部署 Communicator Web Access
  8. Powershell 自定义输出列,两个例子
  9. 安卓Android科大讯飞语音识别代码使用详解
  10. SpringMVC下的基本配置