K-Concatenation Maximum Sum LeetCode solution in Java
1class Solution {2int mod = 1000000007;34public int kadane(int[] a) {5int curr = 0;6int max = Integer.MIN_VALUE;7for (int i : a) {8curr += i;9if (curr < 0) curr = 0;10max = Math.max(max, curr);11}1213return max % mod;14}1516public int kConcatenationMaxSum(int[] arr, int k) {1718int n = arr.length;19if (k == 1) return kadane(arr);20int[] temp = new int[2 * n];21for (int i = 0; i < n; i++) {22temp[i] = arr[i];23temp[n + i] = arr[i];24}25if (k == 2) return kadane(temp) % mod;2627long sum = 0;28for (int i : arr) sum += i;2930if (sum >= 0) return (int) ((kadane(temp) % mod) + ((sum % mod) * (k - 2) % mod) % mod);31else return (kadane(temp) % mod);32}33}