leetcode718 最长重复子数组

举报
兔老大 发表于 2021/04/21 23:26:30 2021/04/21
【摘要】 给两个整数数组 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[...

给两个整数数组 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

思路:和最长公共子串一样(子数组是连续的)


  
  1. class Solution {
  2. public int findLength(int[] A, int[] B) {
  3. int ans = 0;
  4. int[][] memo = new int[A.length + 1][B.length + 1];
  5. for (int i = A.length - 1; i >= 0; --i) {
  6. for (int j = B.length - 1; j >= 0; --j) {
  7. if (A[i] == B[j]) {
  8. memo[i][j] = memo[i+1][j+1] + 1;
  9. if (ans < memo[i][j]) ans = memo[i][j];
  10. }
  11. }
  12. }
  13. return ans;
  14. }
  15. }

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103482822

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。