K-Concatenation Maximum Sum
Description
Given an integer array arr
and an integer k
, modify the array by repeating it k
times.
For example, if arr = [1, 2]
and k = 3
then the modified array will be [1, 2, 1, 2, 1, 2]
.
Return the maximum sub-array sum in the modified array. Note that the length of the sub-array can be 0
and its sum in that case is 0
.
As the answer can be very large, return the answer modulo 10^9 + 7
.
Example 1:
Example 2:
Example 3:
Constraints:
1 <= arr.length <= 10^5
1 <= k <= 10^5
-10^4 <= arr[i] <= 10^4
Solution
If k = 1
, find the maximum sub-array sum in arr
.
Else if k = 2
or sum(arr) <= 0
, find the maximum sub-array sum in concat(arr, arr)
. (The maximum sub-array cannot contain a complete arr
if sum(arr) <= 0
)
Else find the maximum sub-array sum in concat(arr, arr)
+ sum(arr) * (k - 2)
.
Let max_sum[i]
be maximum sub-array sum ending with arr[i]
. Then,
\text{max_sum[i]} = \text{sum}(\text{arr}[0..i]) - \min_{j \le i} \text{sum}(\text{arr}[0..i])
Or \text{max_sum}[i] = \max(\text{arr}[i], \text{max_sum}[i-1] + \text{arr}[i]).
Solution 1
Solution 2
Last updated