松江工业区网站建设,网站seo优化方法,wordpress 什么是分类,有网站模板怎么建站个人主页#xff1a;兜里有颗棉花糖 欢迎 点赞#x1f44d; 收藏✨ 留言✉ 加关注#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 #x1f354;本专栏旨在提高自己算法能力的同时#xff0c;记录一下自己的学习过程#xff0c;希望… 个人主页兜里有颗棉花糖 欢迎 点赞 收藏✨ 留言✉ 加关注本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 本专栏旨在提高自己算法能力的同时记录一下自己的学习过程希望对大家有所帮助 希望我们一起努力、成长共同进步。 点击直接跳转到该题目 目录 1️⃣题目描述2️⃣题目解析3️⃣解题代码 1️⃣题目描述
给两个整数数组 nums1 和 nums2 返回 两个数组中 公共的 、长度最长的子数组的长度 。
示例1 输入nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出3 解释长度最长的公共子数组是 [3,2,1] 。 示例2 输入nums1 [0,0,0,0,0], nums2 [0,0,0,0,0] 输出5 注意
1 nums1.length, nums2.length 10000 nums1[i], nums2[i] 100
2️⃣题目解析
状态表示
dp[i][j] 表示以i位置j位置为结尾的子数组1和子数组2中所有重复子数组的最大长度。
状态转移方程
dp[i][j] dp[i - 1][j - 1] 1
3️⃣解题代码
class Solution {
public:int findLength(vectorint nums1, vectorint nums2) {int m nums1.size(), n nums2.size();vectorvectorint dp(m 1,vectorint (n 1));int ret 0;for(int i 1;i m;i){for(int j 1;j n;j){if(nums1[i - 1] nums2[j - 1]) dp[i][j] dp[i - 1][j - 1] 1,ret max(ret,dp[i][j]);}}return ret;}
};最后就通过啦