Given two integer arrays
A
and B
, return the maximum length of an subarray that appears in both arrays.
Example 1:
Input: A: [1,2,3,2,1] B: [3,2,1,4,7] Output: 3 Explanation: The repeated subarray with maximum length is [3, 2, 1].
Note:
- 1 <= len(A), len(B) <= 1000
- 0 <= A[i], B[i] < 100
Code (Java):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Solution { public int findLength( int [] A, int [] B) { int [][] dp = new int [A.length + 1 ][B.length + 1 ]; int maxLen = 0 ; for ( int i = 1 ; i <= A.length; i++) { for ( int j = 1 ; j <= B.length; j++) { if (A[i - 1 ] == B[j - 1 ]) { dp[i][j] = dp[i - 1 ][j - 1 ] + 1 ; maxLen = Math.max(maxLen, dp[i][j]); } } } return maxLen; } } |
why line 8??? why i - 1 and j - 1???
ReplyDeletewhy [i-1] [j-1] + 1 ?
ReplyDelete