本文主要是介绍动态规划:最长重复子数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本题不算难,但是如果直接想dp数组怎么定义的话就会头晕,先想递推公式的含义就知道为什么需要冗余的dp[0][0]了
class Solution {public int findLength(int[] nums1, int[] nums2) {int res = 0;//1.确定dp数组含义int[][] dp = new int[nums1.length+1][nums2.length+1];//2.初始化//3.确定遍历顺序for(int i = 1;i <=nums1.length;i++){for(int j = 1;j <=nums2.length;j++){if(nums1[i-1] == nums2[j-1]){//4.确定递推公式dp[i][j] = dp[i-1][j-1]+1;}res = Math.max(res,dp[i][j]);}}return res;}
}
这篇关于动态规划:最长重复子数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!