给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。
示例 1:

输入:
A: [1,2,3,2,1]
B: [3,2,1,4,7]
输出: 3
解释:
长度最长的公共子数组是 [3, 2, 1]。

说明:
1 <= len(A), len(B) <= 1000
0 <= A[i], B[i] < 100

分析

动态规划
维护矩阵DP,DP[i][j]代表以A[i-1]与B[j-1]结尾的公共字串的长度,公共字串必须以A[i-1],B[j-1]结束,即当A[i-1] == B[j-1]时,DP[i][j] = DP[i-1][j-1] + 1; 当A[i-1] != B[j-1]时,以A[i-1]和B[j-1]结尾的公共字串长度为0,DP[i][j] = 0。输出最大的公共字串的长度即为最长重复字串。
因为是子数组必须是连续的,所以不能使用《最长公共子序列的方法》!!!

所有的公共字串 ----> 最长公共字串

Tables 3 2 1 4 7
1 0 0 1 0 0
2 0 1 0 0 0
3 1 0 0 0 0
2 0 2 0 0 0
1 0 0 3 0 0

PYTHON:

class Solution(object):def findLength(self, A, B):""":type A: List[int]:type B: List[int]:rtype: int"""n1 = len(A)n2 = len(B)dp = [[0 for _ in range(n2+1)] for _ in range(n1+1)]for i in range(1,n1+1):for j in range(1,n2+1):if A[i-1] == B[j-1]:dp[i][j] = dp[i-1][j-1] + 1return max(max(row) for row in dp)

【数据结构笔记】Leetcode:718. 最长重复子数组(动态规划)相关推荐

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

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

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

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

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

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

  4. LeetCode 718最长重复子数组

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

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

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

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

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

  7. leetcode 718. 最长重复子数组

    难度:中等 频次:53 题目:给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 .长度最长的子数组的长度 . 解题思路:动态规划 注意: 为什么使用动态规划?---->求最 ...

  8. LeetCode 718 最长重复子数组

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

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

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

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

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

最新文章

  1. HttpPrinter与YunPrinter区别
  2. android studio文件风格,Android Studio构建风格 – 如何拥有不同风格的相同源文件
  3. 统计和生成所有不同的二叉树
  4. 《算法竞赛入门经典》 例题3-5 生成元 (Digit Generator, ACM ICPC Seoul 2005,UVa)
  5. Python学习之路:函数参数及调用
  6. android 自定义弹窗diss,Android中自定义PopupWindow,动态弹窗。
  7. 4.4)深度卷积网络:人脸识别和神经风格转换
  8. 捋一捋20201217
  9. 去除dataframe中的空行_Python数据分析中的处理与数值加速技巧简介
  10. Java敏捷开发框架
  11. springboot +vue实现打印PDF(实现批量打印快递单)
  12. Android smali语法
  13. linux桌面图标主题包,推荐 4 款漂亮的 Linux 图标主题
  14. 中国近代史纲要复盘 | 第一章——第四章思维导图梳理(复习专用)
  15. Erlang_ets冷门函数fun2ms
  16. HashMap原理以及TreeMap和Collections工具类(2022.6.10)
  17. Thinkphp中的assign() 和 display()
  18. layUIselect下拉菜单
  19. swf web 播放
  20. MATLAB二维平面绘图

热门文章

  1. Class.forName的作用以及为什么要用它【转】
  2. linux中vim中文显示乱码
  3. 错误提示之:SQL—无法在服务器上访问指定的路径或文件。请确保您具有必需的安全权限且该路径或文件存在。...
  4. 学习NLP:《自然语言处理原理与技术实现(罗刚)》PDF+代码
  5. nginx 启动报错 “/var/run/nginx/nginx.pid failed” 解决方法
  6. iOS学习之Object-C语言继承和初始化方法
  7. hdu 5461(2015沈阳网赛 简单暴力) Largest Point
  8. python range 和 xrange 区别
  9. cocos2dx进阶学习之屏幕适配
  10. 关于树节点巨多时获取用户选中(可多选)节点的优化