Max Dot Product of Two Subsequences LeetCode solution in Java
1class Solution {2public int maxDotProduct(int[] nums1, int[] nums2) {3int N = nums1.length, M = nums2.length;4int[][] dp = new int[N][M];5for (int i = 0; i < N; i++) {6for (int j = 0; j < M; j++) {7dp[i][j] = nums1[i] * nums2[j];8if (i > 0 && j > 0 && dp[i - 1][j - 1] > 0) {9dp[i][j] += dp[i - 1][j - 1];10}11if (i > 0 && dp[i - 1][j] > dp[i][j]) {12dp[i][j] = dp[i - 1][j];13}14if (j > 0 && dp[i][j - 1] > dp[i][j]) {15dp[i][j] = dp[i][j - 1];16}17}18}19return dp[N - 1][M - 1];20}21}