0
点赞
收藏
分享

微信扫一扫

LeetCode:718最长重复子数组 C语言

梦为马 03-30 06:30 阅读 1

718. 最长重复子数组

提示

给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 

示例 1:

输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]
输出:3
解释:长度最长的公共子数组是 [3,2,1] 。

示例 2:

输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]
输出:5

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 100

int findLength(int* nums1, int nums1Size, int* nums2, int nums2Size) {

    int dp[nums1Size+1][nums2Size+1];

    //dp[i][j]

    int i,j,max=0;

    //初始化

    for(i=0;i<nums1Size;i++){

        dp[i][0]=0;

    }

    for(j=0;j<nums2Size;j++){

        dp[0][j]=0;

    }

    //递推公式

    for(i=1;i<=nums1Size;i++){

        for(j=1;j<=nums2Size;j++){

            if(nums1[i-1] == nums2[j-1]){

                dp[i][j] = dp[i-1][j-1]+1;

            }

            else

            dp[i][j] =0;

            max = max > dp[i][j] ? max :dp[i][j];

        }

    }

    return max;

}

举报

相关推荐

0 条评论