给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。
分析:本题需要多次遍历,套2层for循环,将A数组与B数组的每个数都进行比对
为动态规划递归时方便,将dp数组的大小扩大一圈,将dp[0][j]与dp[i][0]空出来,
数组全部元素均初始化为0;
参考代码:
public int findLength(int[] nums1, int[] nums2) {
int[][] dp = new int[nums1.length+1][nums2.length+1];
int ret=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;
}
ret=Math.max(ret,dp[i][j]);
}
}
return ret;
}
