package problem0718 func findLength(a1, a2 []int) int { n1, n2 := len(a1), len(a2) // dp[i][j] == k 表示 a1[i-k:i] == a2[j-k:j] , // 但是 a1[i-k-1] != a2[j-k-1] dp := make([][]int, n1+1) for i := range dp { dp[i] = make([]int, n2+1) } res := 0 for i := 1; i <= n1; i++ { for j := 1; j <= n2; j++ { if a1[i-1] == a2[j-1] { dp[i][j] = dp[i-1][j-1] + 1 res = max(res, dp[i][j]) } } } return res } func max(a, b int) int { if a > b { return a } return b }