• python活力练习Day28


    题目描述: 最长重复子数组

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

    示例 1:

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

    说明:

    1. 1 <= len(A), len(B) <= 1000
    2. 0 <= A[i], B[i] < 100

    引申概念:

    最长公共子序列

    最长公共子串:

     python代码:

    最长公共子串:

     1 def findLength( A, B):
     2     n = len(A)
     3     m = len(B)
     4     dis = [[0 for i in range(n + 1)] for j in range(m + 1)]
     5     for i in range(m):
     6         for j in range(n):
     7             if A[i] == B[j]:
     8                 dis[i + 1][j + 1] = dis[i][j] + 1
     9     max = 0
    10     for i in range(n+1):
    11         for j in range(n+1):
    12             if dis[i][j] > max:
    13                 max = dis[i][j]
    14 
    15     return max
    16 
    17 if __name__ == "__main__":
    18 
    19     A = [1, 0, 0, 1, 1]
    20     B = [1, 0, 0, 0, 1]
    21     print(findLength(A,B))

    输出结果:3   此时最长公共子串为[1,0,0] 或者【0,0,1】

        1 0 0 0 1
      0 0 0 0 0 0
    1 0 1 0 0 0 1
    0 0 0 2 1 1 0
    0 0 0 1 3 2 0
    1 0 1 0 0 0 3
    1 0 1 0 0 0 1

    最长公共子序列:

     1 def findLength( A, B):
     2     n = len(A)
     3     m = len(B)
     4     dis = [[0 for i in range(n + 1)] for j in range(m + 1)]
     5     for i in range(m):
     6         for j in range(n):
     7             if A[i] == B[j]:
     8                 dis[i + 1][j + 1] = dis[i][j] + 1
     9             else:
    10                 dis[i + 1][j + 1] = max(dis[i+1][j],dis[i][j+1])
    11 
    12     return dis[-1][-1]
    13 
    14 if __name__ == "__main__":
    15 
    16     A = [1, 0, 0, 1, 1]
    17     B = [1, 0, 0, 0, 1]
    18     print(findLength(A,B))

    输出结果:4   此时最长公共子序列为[1,0,0,1] 

       
      0  0 0
    1  1 1
    1 2  2 2 2
    1 2  3 3 3
    0 1 2  3 4
    0 1 2  3 3 4

    定义来源:https://blog.csdn.net/ggdhs/article/details/90713154

    题目来源:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/

  • 相关阅读:
    axios基本用法
    Iframe父子窗口之间的跨域事件调用和传值
    js 比较两个日期的大小
    小程序webview实践
    小程序入口构造工具&二维码测试工具
    小程序无限层级路由方案
    TypeScript基础类型,类实例和函数类型声明
    小程序多业务线融合【完整分包业务接入】
    浅谈React16框架
    CSS Modules 与 scoped 的不一样
  • 原文地址:https://www.cnblogs.com/xiaodangdang/p/13217955.html
Copyright © 2020-2023  润新知