首页 > 其他分享 >718-Maximum length of repeated subarry

718-Maximum length of repeated subarry

时间:2024-06-03 21:22:04浏览次数:19  
标签:subarry int res repeated length dp nums1 nums2

题目描述

链接:https://leetcode.com/problems/maximum-length-of-repeated-subarray/description/

Given two integer arrays nums1 and nums2, return the maximum length of a subarray that appears in both arrays.

解释: 给定两个数组nums1nums2, 求两个数组的最长公共子数组

案例:
Input: nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
Output: 3
Explanation: The repeated subarray with maximum length is [3,2,1].

解释:最长公共子数组为[3,2,1]

基本思想

经典二维动态规划。\(dp[i][j]\) 表示以nums[i]和 nums[j]为结尾的 \(nums1[0...,i-1]\)和 \(nums2[0...,j-1]\) 的最长公共子串,则

  • 如果 \(nums1[i] == nums2[j]\),\(dp[i][j]\) = \(dp[i-1][j-1]\)+1
  • 反之,\(dp[i][j]\) = 0

时间复杂度\(o(n^2)\)

代码

c++

    int findLength(vector<int>& nums1, vector<int>& nums2) {
        int n = nums1.size();
        int m = nums2.size();
        if (n<=0 || m<=0) return 0;
        vector<vector<int>> dp(n, vector<int>(m,0));
        int res = 0;
        // - 初始化
        for(int i=0; i<m;++i) {
            if (nums1[0] == nums2[i])
              dp[0][i] = 1;
            res = max(dp[0][i], res);
        }
        for(int i=0; i<n;++i) {
            if (nums1[i] == nums2[0]) 
              dp[i][0] = 1;
            res = max(dp[i][0], res);
        }
        for(int i=1;i<n;++i) {
            for(int j=1;j<m;++j) {
                if (nums1[i] == nums2[j]) {
                    dp[i][j] = dp[i-1][j-1]+1;
                } 
                res = max(res, dp[i][j]);
            }
        }
        return res;
    }
};

python

def findLength(self, nums1: List[int], nums2: List[int]) -> int:
        n,m = len(nums1), len(nums2)
        if n<=0 or m<0: return 0
        dp = [[0] * m for i in range(n)]
        res = 0
        for i in range(n):
            for j in range(m):
                if (nums1[i] == nums2[j]):
                    if (i-1)>=0 and (j-1)>=0:
                        dp[i][j] = dp[i-1][j-1]+1
                    else:
                        dp[i][j] = 1 
                res = max(res, dp[i][j])
        return res

标签:subarry,int,res,repeated,length,dp,nums1,nums2
From: https://www.cnblogs.com/douniwanli/p/18229689

相关文章

  • ABC 310 E NAND repeatedly
    题意太懒了,直接给链接吧,题意挺好懂的。https://atcoder.jp/contests/abc310/tasks/abc310_e思路NAND运算,根据题意,我们可以总结出以下两点:当前结果如果遇到1,那么结果反转(0->1,1->0)当前结果如果遇到0,那么结果赋值为1我们手模一下这个样例1:00110(初始)01011(i==1)×0101(i==......
  • vue 输入框maxlength不影响拼音输入
    直接设置input的maxlength会导致最后几个字无法用拼音输入,比如最大长度还剩两个字,我想输入'项目',当我拼音输入'xi'之后,后面的'angmu'是打不出的。可以不设置maxlength,而是用 this.$nextTick(()=>{})在用户输入完之后,裁剪文字<template><viewclass="input-view">......
  • ASN.1 解析错误 length is out of bounds
    ASN.1中长度字段的编码方式有两种:短格式(ShortForm)和长格式(LongForm)。短格式使用一个字节来表示长度,并且这个字节的最高位(bit8)必须为0。如果长度大于127,则需要使用长格式,它首先用一个字节的0x80加上一个或多个后续字节来表示实际的长度。如果长度字段被错误地编码(例如,错误地使用......
  • C和C++中size sizeof strlen length的对比
    一、sizeof()sizeof是一个操作符,它在编译期间确定的,返回的是静态大小。它可以应用于基本类型、类类型、数组和指针等。例如:sizeof(int)或sizeof(array)。对于数组,sizeof返回整个数组的大小(包括所有元素)。对于指针,sizeof返回指针本身的大小(通常取决于平台和编译器,例如在3......
  • Python模块request去掉headers里请求content-length
    前言全局说明Python模块request去掉headers里请求content-length一、说明当request请求data有参数时,会自动计算长度,并增加content-length值,但有些服务器不接收这样的参数就可能会报错。二、网上方法:2.1requests去掉headers里的content-length来源:https://blog......
  • 题解:AT_abc298_h [ABC298Ex] Sum of Min of Length
    分析模拟赛签到题。考虑分讨。分两种情况:\(L=R\)。\(L\neR\)。对于第\(1\)种情况,用换根DP求一个\(i\)为根时所有点的深度和就行。对于第\(2\)种情况,钦定$dep_R\gedep_L$。很显然,\(R\)为根的子树中所有点都是离\(R\)更近。假设在\(L\)到\(R\)的路径......
  • 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1,否则返回0,并将被删除元素的值赋给
    /********************************************************************************************************** filename: Zqh_splist_4.22.2.c* author : [email protected]* date : 2024/04/22* function: 删除顺序表L中下标为p(0≤p≤length-1)的元素,成功返回1......
  • 删除顺序表L中下标为p(0<≤ p ≤length-1)的元素,成功返回1,否则返回0,并将待删除的元素的
    /********************************************************name:DelElement* function:(笔试题)删除顺序表L中下标为p(0<≤p≤length-1)的元素,*成功返回1,否则返回0,并将待删除的元素的值赋给e。*argument*@p:需要插入......
  • typescript安装问题=> for (let i = startIndex ?? 0; i < array.length; i++) {
    for(leti=startIndex??0;i<array.length;i++){^SyntaxError:Unexpectedtoken?atObject.exports.runInThisContext(vm.js:76:16)atModule._compile(module.js:542:28)atObject.Module._extensions..js(mo......
  • idea异常:java.nio.charset.MalformedInputException: Input length = 1
    先放图吧,一般idea设置成这样都能解决写在后面:MalformedInputException是格式错误输入异常,意思就是指你的项目、配置文件编码不统一,所以我们要统一成UTF-8。一般小项目,肯定按照上图设置就没问题了,大项目文件多,特别是读属性这块,如果排查都没问题的话,可以重启项目,或者clean一下。......