调试:最大和连续子数组
Debugging: Largest Sum Contiguous Subarray
我正在解决一个要求最大和连续子数组的问题。我知道这个问题可以通过使用 Kadane 的算法来解决,但我不知道该算法,所以我尝试自己编写问题代码。
这是我写的代码:
def maxSubarray(arr): # 'arr' is the list for which we have to calculate the maximum sum
h1 = arr[0]
h2 = arr[1]
subset_sum = -sys.maxsize-1
for i in range(1,len(arr)):
h1 = max(h2,h1+arr[i])
subset_sum = max(h1,subset_sum)
subset_sum = max(max(arr),subset_sum) # This is used if all elements in the list are negative
但是这段代码没有给出正确的输出,我似乎无法弄清楚出了什么问题?谁能帮帮我?
您没有在每次迭代时更新 h2。
无需更新,您可以直接使用 arr[i] 来查找最大值。
def maxSubArray(self, arr: List[int]) -> int:
h1 = arr[0]
subset_sum = -sys.maxsize-1
for i in range(1,len(arr)):
h1 = max(arr[i],h1+arr[i])
subset_sum = max(h1,subset_sum)
subset_sum = max(max(arr),subset_sum)
return subset_sum
我正在解决一个要求最大和连续子数组的问题。我知道这个问题可以通过使用 Kadane 的算法来解决,但我不知道该算法,所以我尝试自己编写问题代码。
这是我写的代码:
def maxSubarray(arr): # 'arr' is the list for which we have to calculate the maximum sum
h1 = arr[0]
h2 = arr[1]
subset_sum = -sys.maxsize-1
for i in range(1,len(arr)):
h1 = max(h2,h1+arr[i])
subset_sum = max(h1,subset_sum)
subset_sum = max(max(arr),subset_sum) # This is used if all elements in the list are negative
但是这段代码没有给出正确的输出,我似乎无法弄清楚出了什么问题?谁能帮帮我?
您没有在每次迭代时更新 h2。
无需更新,您可以直接使用 arr[i] 来查找最大值。
def maxSubArray(self, arr: List[int]) -> int:
h1 = arr[0]
subset_sum = -sys.maxsize-1
for i in range(1,len(arr)):
h1 = max(arr[i],h1+arr[i])
subset_sum = max(h1,subset_sum)
subset_sum = max(max(arr),subset_sum)
return subset_sum