In diesem Artikel wird die maximale Länge des wiederholten Subarrays von LeetCode vorgestellt. Ich hoffe, Sie lernen es geduldig.
Gegeben zwei ganzzahlige Arrays A
und B
, wird die Länge des gemeinsamen und längsten Unterarrays in den beiden Arrays zurückgegeben.
Beispiel 1:
输入:A: [1,2,3,2,1] B: [3,2,1,4,7]输出: 3解释: 长度最长的公共子数组是 [3, 2, 1]。
Erklärung:
1 <= len (A), len(B) <= 1000
0 <= A[i], B[i] < 10
Lösung, dies ist ein klassischer dynamischer Programmieralgorithmus, wie folgt:
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)); } }
Verwandte Empfehlungen:
LeetCode 2 Evaluate Reverse Polish Notation
Python verwendet eine Liste von Listen, um Matrizen darzustellen?
Das obige ist der detaillierte Inhalt vonLeetCode Maximale Länge des wiederholten Subarrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!