LeetCode0718.最长重复子数组 Go语言AC笔记

news2025/1/20 10:49:21

时间复杂度:O(n²),空间复杂度:O(n)

解题思路

动态规划思想。令dp[i][j]表示两数组以nums1[i]和nums2[j]为起始元素的公共前缀最大长度,所以如果nums1[i]和nums2[j]元素相同,那么dp[i][j]=dp[i+1][j+1],否则dp[i][j]=0。按照该状态转移方程,我们应该从dp数组的右下角向左上角遍历。最后的最长重复子数组长度就是dp数组中的最大值。

为了降低空间复杂度,可以用滚动数组的方法实现dp数组,但要注意,dp的长度取决于较短的nums2的长度,然后在遍历dp数组时要从左向右遍历,从下到上遍历。

AC代码

func findLength(nums1 []int, nums2 []int) int {
    m,n:=len(nums1),len(nums2)
    if m<n{
        return findLength(nums2,nums1)
    }
    dp:=make([]int,n+1)
    res:=0
    for i:=m-1;i>=0;i--{
        for j:=0;j<n;j++{
            if nums1[i]==nums2[j]{
                dp[j]=dp[j+1]+1
                if dp[j]>res{
                    res=dp[j]
                }
            }else{
                dp[j]=0
            }
        }
    }
    return res
}

感悟

一开始模仿公共子序列写的代码,发现该题目元素必须是连续的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/469277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp合并偏振相机4个角度的图像并显示(C#)

Baumer工业相机堡盟工业相机如何联合BGAPI SDK和OpenCVSharp合并偏振相机4个角度的图像并显示&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机偏振相机的技术背景代码案例分享1&#xff1a;引用合适的类文件2&#xff1a;回调函数里联合BGAPI SDK和OpenCVSharp合并偏…

Leetcode刷题日志2.0

目录 前言&#xff1a; 1.数字的补数 2.最大连续 1 的个数 3.下一个更大元素 I 4.斐波那契数 5.提莫攻击 6.557. 反转字符串中的单词 III 前言&#xff1a; 今天就分享一下最近刷到的leetcode习题吧 &#xff0c;编程语言&#xff1a;Python3。废话不多说&#xff0…

【备战蓝桥杯国赛-国赛真题】2022

思路 题目的一是就是从1~2022这2022个数中挑选十个数&#xff0c;使其的总和为2022&#xff0c;如果做过背包问题&#xff0c;那么思路就很好出来了&#xff0c;每个数无非就是选与不选&#xff0c;每个数有他们的权值&#xff0c;权值就等于它们本身的值&#xff0c;抽象成背…

java调用百度的接口获取起始位置的距离

需求:校验收货地址是否超出配送范围 重要: 做该需求的思路就是通过卖家和卖家具体的地址信息,来获取到二者的经纬度, 此时可以使用百度的 "地理编码服务",即可获取对应的经纬度 第二步,就是通过二者的经纬度,按照百度接口的要求,发送,即可获取到包含二者距离的JSON串…

循环语句for

for循环 循环和遍历的概念 循环&#xff08;Loop&#xff09;和遍历&#xff08;Traversal&#xff09;是两个在计算机编程中经常使用的概念。 循环是一种重复执行一段代码的结构。通过循环&#xff0c;可以在满足一定条件的情况下&#xff0c;多次执行相同的代码。循环语句…

mysql8.0最新版本超详细安装教程

mysql8.0最新版本超详细安装教程 第一步: 百度搜索MySQL 第二步:进入MySQL官方网站后点击DOWNLOADS 第三步:下拉页面找到图中标识 并点击 第四步:点击图中标识 第五步:点击下载第一个 第六步:点击图中标识 第七步:在D盘创建mysql文件夹 第八步:将下载好的mysq压缩包放入到新建…

深度学习:Opencv的blobFromImage是如何工作的

文章目录 1 OpenCV中blobFromImage函数简介2 blobFromImage是如何工作的2.1 介绍2.2 blobFromImage 的工作流程2.3 blobFromImage 和 blobFromImages1 OpenCV中blobFromImage函数简介 如果训练模型时图像的尺寸 与实际使用的图像尺寸不一致,需要对图像尺寸进行变换; blobFr…

第一次使用服务器部署项目

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

HCIA-RS实验-STP和RSTP(2)

接上一篇文章&#xff1b;其他的不多说&#xff0c;新建一个新的配置设备&#xff1b;如果接上一个实验的配置的话&#xff0c;建议先把所有配置删除后再执行&#xff1b;新的拓扑也与上一个实验一致&#xff1b; 目录 创建新配置 配置RSTP 查看stp版本 配置边缘端口 …

如何防止重复下单

一、问题背景 最简单的&#xff1a;DB 事务。如创建订单时&#xff0c;同时往订单表、订单商品表插数据&#xff0c;这些 Insert 须在同一事务执行。 Order 服务调用 Pay 服务&#xff0c;刚好网络超时&#xff0c;然后 Order 服务开始重试机制&#xff0c;于是 Pay 服务对同…

算法基础第一章

算法基础 第一章&#xff1a;基础算法1、排序2、二分查找3、大数据量的加法和减法&#xff08;高精度加减法&#xff09;3.1、加法3.2、减法 4、前缀和4.1、一维前缀和4.2、二维前缀和 5、差分5.1、一维差分5.2、二维差分 6、双指针7、位运算7.1、lowbit的应用 8、离散化9、区间…

基于c与数据库实现的电子词典

1.搭建客户端与服务器&#xff0c;客户端使用多线程方式&#xff0c;主线程跑发送信息给服务器功能&#xff0c;分支线程跑循环接收服务器信息功能 客户端代码&#xff1a; //TCP客户端的搭建 int tcp_kehuduan() {//创建字节流套接字cfd socket(AF_INET,SOCK_STREAM,0);if(c…

【TCP服务器的演变过程】C++使用libevent库开发服务器程序

C使用libevent库开发服务器程序 一、引言二、libevent简介三、Libevent库的封装层级3.1、reactor对象封装struct event_base3.2、事件对象struct event3.3、struct bufferevent对象3.4、evconnlistener对象3.5、事件循环3.6、事件处理 四、完整示例代码小结 一、引言 手把手教…

病毒的遗传分析

噬菌体的生活周期 烈性噬菌体 噬菌体吸附到宿主细胞上尾丝鞘收缩,中轴刺穿宿主细胞头部的DNA被送入宿主细胞在数分钟内,所有的细菌核算和蛋白质合成都被抑制 噬菌体大分子合成(DNA,蛋白外壳),细菌的核算被降解 噬菌体组装:DNA被包到头部,组装尾部,装上尾丝 宿主细胞破裂:约20…

新品首发丨计讯物联5G水利遥测终端机TY511-B3,推动5G+智慧水利再进化

当前&#xff0c;水利在全面感知、全面互联、智慧应用等方面较其他行业存在明显差距。基于物联网行业通信技术的不断突破和水利行业对高速移动通信的强烈需求&#xff0c;5G移动通信以高速率、大带宽、低时延、广连接等特点让水利数据快速高效地传输成为可能&#xff0c;逐渐成…

如何优雅的写个try catch的方式!

软件开发过程中&#xff0c;不可避免的是需要处理各种异常&#xff0c;就我自己来说&#xff0c;至少有一半以上的时间都是在处理各种异常情况&#xff0c;所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块&#xff0c;不仅有大量的冗余代码&#xff0c;而…

流程图拖拽视觉编程-流程编辑器2

目录 一、简介 二、自定义图元 2.1图元设计 2.2 端口QNEPort 2.3节点块QNEBlock 一、简介 前期文章&#xff1a; 流程图拖拽视觉编程--概述_Jason~shen的博客-CSDN博客 流程图拖拽视觉编程-流程编辑器_Jason~shen的博客-CSDN博客 本期内容&#xff1a; 本期将继续介绍…

【Leetcode】236.二叉树的最近公共祖先

二叉树的最近公共祖先 题目思路1思路2代码 题目 思路1 给我们两个二叉树中的节点 找出里面的最近公共祖先 首先我们要分析p q 两点有哪些位置关系 p q在根节点的两侧 此时最近公共祖先就是根节点 在根节点一侧 此时两个节点都在根节点左侧 此时可以递归二叉树 让root.left…

内存取证小练习-基础训练

这是题目和wolatility2.6的链接 链接&#xff1a;https://pan.baidu.com/s/1wNYJOjLoXMKqbGgpKOE2tg?pwdybww 提取码&#xff1a;ybww --来自百度网盘超级会员V4的分享 压缩包很小&#xff0c;题目也比较简单基础&#xff0c;可以供入门使用 1&#xff1a;Which volatility…

使用auto-gpt来写一篇技术文章(如何部署autogpt+遇到的问题+如何使用)

文章目录 前言一、autogpt本地部署1.clone代码2.启动虚拟环境3.运行项目 二、使用aotogpt生成文章1.人设描述2.设置目标3.文章的生成过程4.文章的生成内容 总结 前言 最近AI技术的发展非常迅猛&#xff0c;尤其是和GPT相关的技术&#xff0c;备受瞩目。近日&#xff0c;Autogp…