K-Concatenation Maximum Sum LeetCode solution in Java

1
class Solution {
2
int mod = 1000000007;
3

4
public int kadane(int[] a) {
5
int curr = 0;
6
int max = Integer.MIN_VALUE;
7
for (int i : a) {
8
curr += i;
9
if (curr < 0) curr = 0;
10
max = Math.max(max, curr);
11
}
12

13
return max % mod;
14
}
15

16
public int kConcatenationMaxSum(int[] arr, int k) {
17

18
int n = arr.length;
19
if (k == 1) return kadane(arr);
20
int[] temp = new int[2 * n];
21
for (int i = 0; i < n; i++) {
22
temp[i] = arr[i];
23
temp[n + i] = arr[i];
24
}
25
if (k == 2) return kadane(temp) % mod;
26

27
long sum = 0;
28
for (int i : arr) sum += i;
29

30
if (sum >= 0) return (int) ((kadane(temp) % mod) + ((sum % mod) * (k - 2) % mod) % mod);
31
else return (kadane(temp) % mod);
32
}
33
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0