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