题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个数组和一个数字k,这个数组将自我复制 k 次串联一起,求串联后的数组中子数组之和的最大值。(可以为空)

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution:
def maxSubArr(self, arr: List[int]):
s = f = 0
for i, x in enumerate(arr):
f = max(f, 0) + x
s = max(s, f)
# print("%d %d" % (f, s))
return s

def kConcatenationMaxSum(self, arr: List[int], k: int) -> int:
if k == 1:
return self.maxSubArr(arr)
s = self.maxSubArr(arr+arr)
return (s + max(sum(arr)*(k-2), 0))% 1_000_000_007