Skip to content

Commit c380c14

Browse files
authored
Create 3077-maximum-strength-of-k-disjoint-subarrays.js
1 parent c61eef2 commit c380c14

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
let pre = Array(10001).fill(0);
2+
let cur = Array(10001).fill(0);
3+
let ps = Array(10001).fill(0);
4+
5+
/**
6+
* @param {number[]} nums
7+
* @param {number} k
8+
* @return {number}
9+
*/
10+
var maximumStrength = function (nums, k) {
11+
let n = nums.length;
12+
13+
ps[0] = 0;
14+
for (let i = 0; i < n; ++i) {
15+
ps[i + 1] = ps[i] + nums[i];
16+
}
17+
18+
++n;
19+
cur.fill(0, 0, n);
20+
21+
for (let i = 1; i <= k; ++i) {
22+
let tem = pre;
23+
pre = cur;
24+
cur = tem;
25+
26+
let t = 1 + k - i;
27+
if (!(i & 1)) t = -t;
28+
29+
let m = pre[i - 1] - ps[i - 1] * t;
30+
cur[i] = ps[i] * t + m;
31+
m = Math.max(m, pre[i] - ps[i] * t);
32+
33+
for (let j = i + 1; j < n; ++j) {
34+
cur[j] = Math.max(cur[j - 1], ps[j] * t + m);
35+
m = Math.max(m, pre[j] - ps[j] * t);
36+
}
37+
}
38+
39+
return cur[n - 1];
40+
};

0 commit comments

Comments
 (0)