Maximum Sum of Two Non-Overlapping Subarrays LeetCode solution in JavaScript

1
var maxSumTwoNoOverlap = function (nums, firstLen, secondLen) {
2
function helper(arr, x, y) {
3
const n = arr.length;
4
let sum = 0;
5
const dp1 = []; // store left x sum
6
const dp2 = []; // store right y sum
7

8
for (let i = 0; i < n; i++) {
9
if (i < x) {
10
sum += arr[i];
11
dp1[i] = sum;
12
} else {
13
sum += arr[i] - arr[i - x];
14
dp1[i] = Math.max(dp1[i - 1], sum);
15
}
16
}
17
sum = 0;
18
for (let i = n - 1; i >= 0; i--) {
19
if (i >= n - y) {
20
sum += arr[i];
21
dp2[i] = sum;
22
} else {
23
sum += arr[i] - arr[i + y];
24
dp2[i] = Math.max(dp2[i + 1], sum);
25
}
26
}
27
let max = -Infinity;
28
for (let i = x - 1; i < n - y; i++) {
29
max = Math.max(max, dp1[i] + dp2[i + 1]);
30
}
31
return max;
32
}
33
return Math.max(
34
helper(nums, firstLen, secondLen),
35
helper(nums, secondLen, firstLen)
36
);
37
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0