本题不算难,但是如果直接想dp数组怎么定义的话就会头晕,先想递推公式的含义就知道为什么需要冗余的dp[0][0]了
class Solution {
public int findLength(int[] nums1, int[] nums2) {
int res = 0;
//1.确定dp数组含义
int[][] dp = new int[nums1.length+1][nums2.length+1];
//2.初始化
//3.确定遍历顺序
for(int i = 1;i <=nums1.length;i++){
for(int j = 1;j <=nums2.length;j++){
if(nums1[i-1] == nums2[j-1]){
//4.确定递推公式
dp[i][j] = dp[i-1][j-1]+1;
}
res = Math.max(res,dp[i][j]);
}
}
return res;
}
}