给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。
class Solution {
public:
int findLength(vector<int>& nums1, vector<int>& nums2) {
int n=nums1.size();
int m=nums2.size();
int ans=0;
//二维dp数组,n+1行 m+1列 初始换全为0
vector<vector<int>>dp(n+1,vector<int>(m+1,0));
//dp[i][j]表示的是以nums1[i-1]和nums2[j-1]结尾的子数组长度
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
//如果两个数组的值相同,以他们为结尾的子数组长度为以他们前一个为结尾的子数组长度+1
if(nums1[i-1]==nums2[j-1]){
dp[i][j]==dp[i-1][j-1]+1;
}
//更新最长的长度
ans=max(ans,dp[i][j]);
}
}
return ans;
}
};
1290

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



