中等 718 最長重複子陣列

2022-06-09 07:33:09 字數 721 閱讀 6853

leetcode718

給兩個整數陣列 a 和 b ,返回兩個陣列中公共的、長度最長的子陣列的長度。

輸入: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

一、暴力超時

class

solution

res =math.max(res,k);}}

return

res;

}}

二、滑動視窗

在尋找兩個子陣列時,暴力法需要 a.length * b.length ,而滑動視窗僅需 a.length+b.length 。

class

solution

//a固定 b向左滑動

for (int i = 0; i < m; i++)

return

res;

}//astart與bstart對齊

public

int maxlength(int a, int b, int astart, int bstart, int

len)

return

res;

}}

三、動態規劃(待補充)

718 最長重複子陣列

給兩個整數陣列a和b,返回兩個陣列中公共的 長度最長的子陣列的長度。目錄 1 題目分析 2 解題分析 3 示例 1 輸入 a 1,2,3,2,1 b 3,2,1,4,7 輸出 3 解釋 長度最長的公共子陣列是 3,2,1 求兩個陣列公共的子陣列的長度,那麼可以用較短的那個字串去匹配長的字串,使用列舉...

718 最長重複子陣列

給兩個整數陣列 a 和 b 返回兩個陣列中公共的 長度最長的子陣列的長度。可以用dp i j 表示a陣列從i位置,b陣列從j位置開始的最長子陣列長度,由此可知,當a i b j 時,dp i j 取決與dp i 1 j 1 的結果,也即使dp i j dp i 1 j 1 1,當a i b j 時,...

718 最長重複子陣列

題目描述 給兩個整數陣列 a 和 b 返回兩個陣列中公共的 長度最長的子陣列的長度。示例 1 輸入 a 1,2,3,2,1 b 3,2,1,4,7 輸出 3 解釋 長度最長的公共子陣列是 3,2,1 題目分析 這道題和兩個字串的最長公共子串行類似,不同之處在於子陣列是連續的,那麼只需要改變一下遞推公...