718 最長重複子陣列

2021-10-07 16:17:44 字數 730 閱讀 7243

給兩個整數陣列 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]時,dp[i][j] = 0。

class

solution

else

ans =

max(ans, dp[i]

[j]);}

}return ans;}}

;

可以分別固定a陣列讓b陣列滑動,固定b陣列讓a陣列滑動,然後計算相對位置的重複元素即可。

class

solution

else

len_return =

max(k, len_return);}

return len_return;

}int

findlength

(vector<

int>

& a, vector<

int>

& b)

for(

int j =

0; j < n; j++

)return ans;}}

;

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

718 最長重複子陣列

給兩個整數陣列 a 和 b 返回兩個陣列中公共的 長度最長的子陣列的長度。示例 輸入 a 1,2,3,2,1 b 3,2,1,4,7 輸出 3 解釋 長度最長的公共子陣列是 3,2,1 1.暴力生成所有子陣列,依次判斷。更直接的暴力。2.dp,dp i j 表示a i b j dp i j 1 dp...