Skip to content

Commit a53ce89

Browse files
authored
Create 1191-k-concatenation-maximum-sum.js
1 parent 16814f6 commit a53ce89

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number[]} arr
3+
* @param {number} k
4+
* @return {number}
5+
*/
6+
const kConcatenationMaxSum = function(arr, k) {
7+
const MOD = 1e9 + 7,
8+
INF = 1e4 + 1;
9+
const kadane = (A, sum = 0, ans = -INF) => {
10+
for (let x of A) {
11+
sum = Math.max(0, sum + x);
12+
ans = Math.max(ans, sum);
13+
}
14+
return [sum, ans];
15+
};
16+
const [sum1, ans1] = kadane(arr);
17+
const [sum2, ans2] = kadane(arr, sum1);
18+
const [sum3, ans3] = kadane(arr, sum2);
19+
const delta1 = ans2 - ans1,
20+
delta2 = ans3 - ans2;
21+
return k == 1 || delta1 == 0
22+
? ans1
23+
: delta2 == 0
24+
? ans2
25+
: ans1 + ((delta1 * (k - 1)) % MOD);
26+
};

0 commit comments

Comments
 (0)