题解 | JAVA DP #最长上升子序列(一)# [P0-T2]

最长公共子数组

http://www.nowcoder.com/practice/6032826d387c4a10ad3690cce5fdb015

   1 2 5 5 7 8  global-max
2  0 1 0 0 0 0     1
5  0 0 1 1 0 0     1
7  0 0 0 0 2 0     2
8  0 0 0 0 0 3     3
5  0 0 1 1 0 0     3

dp[i][j]: length of common-sequence ending on A[i] and B[i]
dp[i][j] = max {
  d[i-1][j-1] + 1  ~ A[i] = B[j]
  0                 ~ A[i] != B[i]
}
// No space optimization
// Space O(m*n)
// Time  O(m*n)
import java.util.*;

public class Solution {
    public int longestCommonSubarry (int[] A, int[] B) {
      // padded with 0 at beginning
      int dp[][] = new int[A.length+1][B.length+1];
      int max = 0;
      for (int i = 1; i <= A.length; i++) {
        for (int j = 1; j <= B.length; j++) {
          dp[i][j] = A[i-1] == B[j-1] ? dp[i-1][j-1] + 1 : 0;
          max = Math.max(max, dp[i][j]);
        }
      }
     
      return max;
    }
}
// 2D -> 1D space optimize
// Space O(n)
// Time  O(m*n)
public class Solution {
    public int longestCommonSubarry (int[] A, int[] B) {
      // let A always be the shorter array
      if (A.length > B.length) {
        int[] tmp = A; A = B; B = A;
      }
      
      // pad dp[0] === 0
      int[] dp = new int[B.length+1];
      int maxLen = 0;  // global max
     
      for (int i = 1; i < A.length+1; i++) {  // dp[0][j] === 0
        // reverser j to prevent dirty wrties
        for (int j = B.length; j >= 1; j--) { // dp[i][0] === 0
          if (A[i-1] == B[j-1]) 
            dp[j] = dp[j-1] + 1;
          else 
            dp[j] = 0;
            
          maxLen = Math.max(dp[j], maxLen);
        }
      }
      
      return maxLen;
    }
}
DP是真的烦 文章被收录于专栏

只是为了把DP的题集中一下方便自己复习

全部评论

相关推荐

在写周报的打工人很独...:这个笔试昨天晚上做了一下,真难啊,前后端,ai全有
点赞 评论 收藏
分享
想干测开的tomca...:这份简历是“大一新生硬凹资深后端”的典型反面教材,槽点离谱到能让面试官直接笑出声: ### 1. 「年龄+入学时间」和项目复杂度完全脱节,可信度直接归0 你2024年7月才入学(现在刚读了1年多),19岁的大一新生,能把Vue3+Spring Boot+ShardingSphere+K8s+AI这些技术全塞进两个项目里?别说实际开发,光把这些技术的文档看完都得半年——这不是“能力强”,是“把招聘JD里的技术词全抄过来造假”,明摆着没碰过实际代码
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务