有哪些免费做外贸网站,wordpress全自动采集插件,广州地址设计网站,正规的徐州网站建设思路就是建立一个二维的dp数组#xff0c;只要nums1[i]nums2[j]#xff08;nums1和nums2出现重复元素就置1 并加上左上角的值) 为什么代码是nums1 i-1和nums2 i-1
答#xff1a;因为i和j以1为初始值开始遍历的 为什么要这么做并且为什么要加dp【i-1】【j-1】#xff1f; …
思路就是建立一个二维的dp数组只要nums1[i]nums2[j]nums1和nums2出现重复元素就置1 并加上左上角的值) 为什么代码是nums1 i-1和nums2 i-1
答因为i和j以1为初始值开始遍历的 为什么要这么做并且为什么要加dp【i-1】【j-1】
我们观察dp数组发现dp【i】【j】的左上角为1就是连续的重复子串那就将所有的dp【i】【j】都加上左上角的值ans再遍历的过程中同时取最大值就是我们要的答案
这也是为什么我们会在dp[i][j]多加上一行一列的原因防止加上后越界 class Solution {static const int N 1e37; int dp[N][N];
public:int findLength(vectorint nums1, vectorint nums2) {int ans0;for(int i1;inums1.size();i){for(int j1;jnums2.size();j){if(nums1[i-1]nums2[j-1])dp[i][j]1dp[i-1][j-1];ansmax(ans,dp[i][j]);}}return ans;}
};