이번 글에서는 LeetCode의 반복 하위 배열의 최대 길이에 대해 소개합니다.
두 개의 정수 배열이 주어지면 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] < 10
솔루션은 다음과 같은 고전적인 동적 프로그래밍 알고리즘입니다.
public class MaxLengthRepeatedSubarray { //动态规划算法 public static int findLength(int[] A, int[] B) { int aSize = A.length; int bSize = B.length; int[][] dp = new int[aSize + 1][bSize + 1]; int result = 0; for (int i = 1; i < dp.length; i++) { for (int j = 1; j < dp[i].length; j++) { dp[i][j] = A[i - 1] == B[j - 1] ? dp[i - 1][j - 1] + 1 : 0; result = Math.max(result, dp[i][j]); } } return result; } public static void main(String[] args) { int[] a = new int[]{1, 2, 3, 2, 1}; int[] b = new int[]{3, 2, 1, 4, 7}; System.out.println(findLength(a, b)); } }
관련 권장 사항:
위 내용은 LeetCode 반복 하위 배열의 최대 길이의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!