class Solution {
public int findLength(int[] nums1, int[] nums2) {
int[][] dp = new int[nums1.length + 1][nums2.length + 1];
int max = 0;
for(int i = 1; i <= nums1.length;i++){
for(int j = 1;j <= nums2.length;j++){
if(nums1[i - 1] == nums2[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;
max = Math.max(dp[i][j],max);
}
}
return max;
}
}
dp[i][j] 分别表示以A[i - 1] 和B[j - 1]结尾的最长公共子序列
最长重复子数组问题与动态规划解法
本文介绍了一种使用动态规划解决寻找两个整数数组中最长重复子数组长度的方法。通过二维数组dp来存储以每个元素为结尾的最长公共子序列的长度,并利用动态规划的思想更新最大长度。该算法对于理解动态规划在数组问题中的应用具有很好的示例作用。
507

被折叠的 条评论
为什么被折叠?



