Medium
K-Concatenation Maximum Sum — Python
Full explanation · Time O(n) · Space O(1)
# Time: O(n)
# Space: O(1)
class Solution(object):
def kConcatenationMaxSum(self, arr, k):
"""
:type arr: List[int]
:type k: int
:rtype: int
"""
def max_sub_k_array(arr, k):
result, curr = float("-inf"), float("-inf")
for _ in xrange(k):
for x in arr:
curr = max(curr+x, x)
result = max(result, curr)
return result
MOD = 10**9+7
if k == 1:
return max(max_sub_k_array(arr, 1), 0) % MOD
return (max(max_sub_k_array(arr, 2), 0) + (k-2)*max(sum(arr), 0)) % MOD