我正在尝试修改Kadane算法以解决一个更具体的问题。 "Original Answer"翻译成"最初的回答"。
这是解决最大子数组问题的代码。 我想要做的是找到长度最多为K的最大子数组。
示例:我们有一个数组A = [3,-5 1 2,-1 4,-3 1,-2],并且我们想要找到长度最多为K = 9的最大子数组。 子数组的长度不应限制在K上,如果存在另一个长度L<K提供更大的总和,则算法应返回sum [: L]。
在本例中,算法将返回0,但实际上应该返回6,即A [2:5]的总和。
def max_Sum(arr, length, k):
if length < k:
print('length of array should be greater than k')
res = 0
for i in range(0, k):
res += arr[i]
current_sum = res
for i in range(k, n):
if k == n:
for j in range(0, k-1):
res += arr[j]
current_sum = res
else:
current_sum += arr[i] - arr[i-k]
print(res, current_sum)
res = max(res, current_sum)
return res
这是解决最大子数组问题的代码。 我想要做的是找到长度最多为K的最大子数组。
示例:我们有一个数组A = [3,-5 1 2,-1 4,-3 1,-2],并且我们想要找到长度最多为K = 9的最大子数组。 子数组的长度不应限制在K上,如果存在另一个长度L<K提供更大的总和,则算法应返回sum [: L]。
在本例中,算法将返回0,但实际上应该返回6,即A [2:5]的总和。