718.最长重复子数组
这题真的想不到。
看图的话会好懂很多。
class Solution {
public int findLength(int[] nums1, int[] nums2) {
int n=nums1.length;
int n2=nums2.length;
int[][] dp=new int[n+1][n2+1];
int result=0;
for(int i=1;i<n+1;i++){
for(int j=1;j<n2+1;j++){
if(nums1[i-1]==nums2[j-1])
dp[i][j]=dp[i-1][j-1]+1;
result=Math.max(result,dp[i][j]);
}
}
return result;
}
}
1143.最长公共子序列
不会是不会喽。
理解还是可以的。
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
int n1=text1.length();
int n2=text2.length();
int[][] dp=new int[n1+1][n2+1];
for(int i=1;i<=n1;i++){
for(int j=1;j<=n2;j++){
if(text1.charAt(i-1)==text2.charAt(j-1))
dp[i][j]=dp[i-1][j-1]+1;
else
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
}
}
return dp[n1][n2];
}
}