給兩個整數陣列動態規劃:dp[i][j] a[0, i]和b[0,j]的最長重複子陣列a
和b
,返回兩個陣列中公共的、長度最長的子陣列的長度。輸入:a: [1,2,3,2,1]b: [3,2,1,4,7]輸出:3解釋:長度最長的公共子陣列是 [3, 2, 1]。
狀態轉移方程
python
class solution:
def findlength(self, a, b):
n1, n2 = len(a), len(b)
dp = [[0] * (n1 + 1) for _ in range(n2+1)]
res = 0
for i in range(1, n2+1):
for j in range(1, n1+1):
dp[i][j] = (dp[i-1][j-1] + 1) if b[i-1] == a[j-1] else 0
res = max(res, dp[i][j])
return res
LeetCode 718 最長重複子陣列
給兩個整數陣列 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 lci問題,沒什麼好說的就是寫就完事了...
leetcode 718 最長重複子陣列
給兩個整數陣列 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 i j 表示以a ...
LeetCode 718 最長重複子陣列
給兩個整數陣列 a 和 b 返回兩個陣列中公共的 長度最長的子陣列的長度。首先想到的就是滑動法,就像卷積一樣,其中乙個序列從另乙個陣列的左邊一直滑到右邊,然後交疊部分挨個比較。分三部分 1.序列a逐漸全部走進序列b。2.序列a完全在b中滑動。3.序列a逐漸離開b class solution def...