classSolution {
publicintfindLength(int[] nums1, int[] nums2) {
int m = nums1.length, n = nums2.length, res = 0;
int[][] dp =newint[m+1][n+1];
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (nums1[i-1]== nums2[j-1]) {
dp[i][j]= dp[i-1][j-1]+ 1;
res = Math.max(res, dp[i][j]);
}
}
}
return res;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
classSolution {
funfindLength(nums1: IntArray, nums2: IntArray): Int {
val m = nums1.size
val n = nums2.size
val dp = Array(m+1) { IntArray(n+1) }
var res = 0for (i in1..m) {
for (j in1..n) {
if (nums1[i-1] == nums2[j-1]) {
dp[i][j] = dp[i-1][j-1] + 1 res = maxOf(res, dp[i][j])
}
}
}
return res
}
}
1
2
3
4
5
6
7
8
9
10
11
classSolution:
deffindLength(self, nums1: list[int], nums2: list[int]) -> int:
m, n = len(nums1), len(nums2)
dp = [[0]*(n+1) for _ in range(m+1)]
res =0for i in range(1, m+1):
for j in range(1, n+1):
if nums1[i-1] == nums2[j-1]:
dp[i][j] = dp[i-1][j-1] +1 res = max(res, dp[i][j])
return res
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
impl Solution {
pubfnfind_length(nums1: Vec<i32>, nums2: Vec<i32>) -> i32 {
let m = nums1.len();
let n = nums2.len();
letmut dp =vec![vec![0; n+1]; m+1];
letmut res =0;
for i in1..=m {
for j in1..=n {
if nums1[i-1] == nums2[j-1] {
dp[i][j] = dp[i-1][j-1] +1;
res = res.max(dp[i][j]);
}
}
}
res
}
}