Max Dot Product of Two Subsequences LeetCode solution in JavaScript

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

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0