Max Dot Product of Two Subsequences LeetCode solution in JavaScript
1/**2* @param {number[]} nums13* @param {number[]} nums24* @return {number}5*/6var maxDotProduct = function (nums1, nums2) {7var m = nums1.length;8var n = nums2.length;9if (!m || !n) return 0;10var dp = [[nums1[0] * nums2[0]]];11for (var i = 1; i < m; i++) {12dp[i] = [];13dp[i][0] = Math.max(nums1[i] * nums2[0], dp[i - 1][0]);14}15for (var i = 1; i < n; i++)16dp[0][i] = Math.max(nums1[0] * nums2[i], dp[0][i - 1]);17for (var i = 1; i < m; i++) {18for (var j = 1; j < n; j++) {19var val = nums1[i] * nums2[j];20dp[i][j] = Math.max(21val,22val + dp[i - 1][j - 1],23dp[i][j - 1],24dp[i - 1][j]25);26}27}28return dp[m - 1][n - 1];29};