718. 最长重复子数组
Posted HardyDragon_CC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了718. 最长重复子数组相关的知识,希望对你有一定的参考价值。
718. 最长重复子数组
思路
- 求连续子序列、子数组,dp适合。
- dp[i][j] 以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]。
- 递推从1开始,利用初始值dp[0][0]
class Solution
public int findLength(int[] nums1, int[] nums2)
// 数组初始化大小需要注意多一行一列
int[][] dp = new int[nums1.length + 1][nums2.length + 1];
int res = 0;
// i,j从1开始递推到各自最后下标
for(int i = 1;i <= nums1.length;i++)
for(int j = 1;j <= nums2.length;j++)
// 遇到相同的说明可以为子数组,在前一个基础上+1
if(nums1[i-1] == nums2[j-1])
dp[i][j] = dp[i-1][j-1] + 1;
// 保留最大值
if(dp[i][j] > res)
res = dp[i][j];
return res;
以上是关于718. 最长重复子数组的主要内容,如果未能解决你的问题,请参考以下文章