zoukankan      html  css  js  c++  java
  • 【力扣】最长重复子数组

    给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。

    示例 1:

    输入:
    A: [1,2,3,2,1]
    B: [3,2,1,4,7]
    输出: 3
    解释:
    长度最长的公共子数组是 [3, 2, 1]。
    说明:

    1 <= len(A), len(B) <= 1000
    0 <= A[i], B[i] < 100

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray

     解答方式:动态规划

    public int longestCommonSubsequence(String text1, String text2) {
            if (text1.length() == 0 || text2.length() == 0){
                return 0;
            }
    
            int max = 0;
            char textA[] = text1.toCharArray();
            char textB[] = text2.toCharArray();
            int dp[][] = new int[textA.length + 1][textB.length + 1];
            //最长公共子串 dp[i][j]=dp[i-1][j-1] + 1;
    //        for (int i = 1;i< textA.length; i++){
    //            for (int j = 1;j< textB.length; j++){
    //                if (textA[i-1] == textB[j-1]){
    //                    dp[i][j] = dp[i-1][j-1] + 1;
    //                    max=Math.max(dp[i][j],max);
    //                }else {
    //                    dp[i][j]= 0;
    //                }
    //            }
    //        }
    //
    
            //最长公共子序列 dp[i][j] =
            for (int i = 1;i< textA.length; i++){
                for (int j = 1;j< textB.length; j++){
                    if (textA[i-1] == textB[j-1]){
                        dp[i][j] = dp[i-1][j-1] + 1;
                    }else {
                        dp[i][j]= Math.max(dp[i-1][j],dp[i][j-1]);
                    }
                    max = Math.max(max,dp[i][j]);
                }
            }
            return max;
        }
    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    python input函数
    linux可用内存判断
    python if-elif-else 判断
    python if判断
    python使用range()函数创建数字列表list
    python range函数
    python语法缩进
    python for循环
    python列表删除和排序
    hbctf 父亲的信
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13221346.html
Copyright © 2011-2022 走看看