leetcode 718 最長重複子陣列 動態規劃

2021-10-07 16:17:44 字數 789 閱讀 4982

給兩個整數陣列 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

題目其實相當於字串中的最長公共字串長度,使用二維陣列記錄每個位置對應的上一位是否匹配。如圖所示

狀態轉移方程如下

if

(a[i]

== b[i]

) dp[i]

[j]= dp[i-1]

[j-1]+

1else dp[i]

[j]=

0

kotlin**,為了防止i-1越界初始化二維陣列長度+1

fun

findlength

(a: intarray, b: intarray)

: int })

// 狀態轉移方程 if(a[j-1] == b[j-1]) dp[i][j] = dp[i-1][j-1]+1 else dp[i][j] = 0

for(i in

1..len)

}return max

}

leetcode 718 最長重複子陣列

給兩個整數陣列a和b,返回兩個陣列中公共的 長度最長的子陣列的長度。輸入 a 1,2,3,2,1 b 3,2,1,4,7 輸出 3解釋 長度最長的公共子陣列是 3,2,1 動態規劃 dp i j a 0,i 和b 0,j 的最長重複子陣列 狀態轉移方程 python class solution d...

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 ...