建设网站专家,中国中小企业信息网官网,友链网,深圳市住房保障署官网给两个整数数组 nums1 和 nums2 #xff0c;返回 两个数组中 公共的 、长度最长的子数组的长度 。 示例 1#xff1a; 输入#xff1a;nums1 [1,2,3,2,1], nums2 [3,2,1,4,7] 输出#xff1a;3 解释#xff1a;长度最长的公共子数组是 [3,2,1] 。 示例 2#xff1a; 输… 给两个整数数组 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 1000 0 nums1[i], nums2[i] 100 解题思路
1、若nums1[i] 等于 nums2[j]的话那么dp[i][j]就能用d[i 1][j 1] 1迭代过来
2、从后往前推即可
class Solution {public int findLength(int[] nums1, int[] nums2) {int n nums1.length;int m nums2.length;int dp[][] new int[n 1][m 1];//dp[n][m] 0;int res 0;for(int i n - 1; i 0; i --)for(int j m -1; j 0; j --) {dp[i][j] nums1[i] nums2[j] ? dp[i 1][j 1] 1 : 0;res Math.max(res, dp[i][j]);}return res;}
}