首页 > 其他分享 >718. 最长重复子数组(leetcode)

718. 最长重复子数组(leetcode)

时间:2024-09-07 15:24:48浏览次数:9  
标签:结尾 718 int 重复子 nums1 数组 leetcode nums2

https://leetcode.cn/problems/maximum-length-of-repeated-subarray/

难点是在于状态定义,需要考虑到以第i个数为结尾,以第j个数为结尾的最长重复子数组 这样的定义
而递推就很简单,只需要发生重复时+1即可,和之前的一维的,即最长子数组一样

class Solution {
    public int findLength(int[] nums1, int[] nums2) {
        // 这里的子数组就是 连续子序列 的意思
        // f[i][j] 表示以第i个数为结尾,第j个数为结尾的最长重复子数组
        // 以结尾是否重复来划分子集进行递推
        // f[i][j]= if(nums1[i]==nums2[j]) f[i-1][j-1]+1; // 需要偏移一位
        // 因此f[i][0],f[0][j]都是没有意义的,因为f下标是从1开始的,0无意义
        // 且为不影响递推,因此全初始化0
        int[][] f=new int[nums1.length+1][nums2.length+1];
        int res=0;
        for(int i=1;i<=nums1.length;i++)
        {
            for(int j=1;j<=nums2.length;j++)
            {
                if(nums1[i-1]==nums2[j-1])f[i][j]=f[i-1][j-1]+1;
                res=Math.max(res,f[i][j]);
            }
        }
        return res;
    }
}

 

标签:结尾,718,int,重复子,nums1,数组,leetcode,nums2
From: https://www.cnblogs.com/lxl-233/p/18401723

相关文章

  • 674. 最长连续递增序列(leetcode)
    https://leetcode.cn/problems/longest-continuous-increasing-subsequence/description/classSolution{publicintfindLengthOfLCIS(int[]nums){//f[i]表示以第i个数为结尾的最长连续递增序列//以倒数第2个数划分子集//f[i]=if(nums......
  • 300. 最长递增子序列(leetcode)
    https://leetcode.cn/problems/longest-increasing-subsequence/description/classSolution{publicintlengthOfLIS(int[]nums){//f[i]表示以第i个数为结尾的最长严格上升子序列//以倒数第二个数是多少来划分子集//f[i]=max(f[i-1],f[......
  • 714. 买卖股票的最佳时机含手续费(leetcode)
    https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/classSolution{publicintmaxProfit(int[]prices,intfee){//f[i][j]表示前i天进行交易购买,j=0表示持有股票,j=1表示未持有股票,划分两个状态//f[i][0]=......
  • Leetcode算法挑战:详解如何实现交替合并字符串的解题思路
    Leetcode算法挑战中的“交替合并字符串”问题,要求我们将两个字符串以交替的方式合并,终形成一个新的字符串。乍一看,这道题目似乎不复杂,但要写出高效且简洁的解法,还需要一定的思路和技巧。一、问题描述题目要求给定两个字符串word1和word2,将它们按照索引依次交替合并。如果某个......
  • LeetCode刷题-栈
    一:栈1、栈的特性:栈和队列不一样;队列是先进先出;而队列是先进后出;后进后出!2、栈的常见操作defcreate_stack():stack=[]#在python中;通常用列表实现栈的操作returnstackdefpush(stack,data):stack.append(data)#将data压入栈中defpeek(stack):returnsta......
  • 算法练习小技巧之有序集合--套路详细解析带例题(leetcode)
    前言:    本文详细讲解Python中的有序集合SortedList和C++中的有序集合multiset的用法,配合leetcode的例题来展示实际的用处。(本人水平不够,还无法讲解有序集合的实现方法,只会用)    觉得有帮助或者写的不错可以点个赞,后面也有几道我找出来的题目可以用这个方......
  • 2024.9.6 leetcode 70 爬楼梯 (哈希表/动态规划)
    题面70.爬楼梯-力扣(LeetCode)题解:极其经典的一道动态规划,比如要跳到10楼有f(10)种方法,可以分为1、先跳到9楼再往上跳1楼2、先跳到8楼再往上跳2楼,所以f(10)=f(8)+f(9),昨天复习了哈希表,所以用哈希练习一下。classSolution{public:intclimbStairs(intn){uno......
  • Leetcode面试经典150题-210.课程表II
    这个题是图的问题,因为图的拓扑排序在实际应用中有非常多的用途图,所以最近考的越来越多解法都在代码里,不懂就留言或者私信看这个题之前一定要好好看看207题我写的题解,也许207看懂了的话,210只是一个coding问题了Leetcode面试经典150题-207.课程表-CSDN博客一定要看!一定要看!......
  • LeetCode Hot100刷题记录-21. 合并两个有序链表
    题目描述:将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。需要知道的pre-knowledge:list1和list2起初可直接代表两个链表的头节点,无需用另外的变量比如current来表示头节点。思路:准备一个虚拟节点,指向合并完成新链表的h......
  • LeetCode Hot100刷题记录-206. 反转链表
    206.反转链表题目描述:给你单链表的头节点head,请你反转链表,并返回反转后的链表。这道题要用到两个指针,一个current指向当前节点,另一个prev指向当前节点的上一个节点。首先让current指向头节点head,prev指向head的前一个也就是null,这里要用next变量来暂时存储current的下一个......