这个问题是关于leetcode 53的。我把这个问题扩展了一点,返回具有最大和的子数组。
例如,对于list = [-2,1,-3,4,-1,2,1,-5,4]
,我应该得到max_subarray = [4,-1,2,1]
。
我的代码附在下面。我得到的结果是[4,-1,2,1,-5,4]
,也就是cur_array
。我不知道我做错了什么。
def maxSubarray(self, list):
cur_sum = 0
max_sum = list[0]
max_subarray = []
cur_array = []
for i in range(len(list)):
cur_sum += list[i]
cur_array.append(list[i])
if max_sum < cur_sum:
max_subarray = cur_array
max_sum = cur_sum
if cur_sum < 0:
cur_sum = 0
cur_array.clear()
return max_subarray
它总是给我cur_array
。如何修复我的代码?
1条答案
按热度按时间myzjeezk1#
这是我对原始问题的解决方案,它击败了99.73%。您需要做的是跟踪索引
i
,其中获得了最大和。从该索引开始,您可以轻松找到sum等于max sum的子数组。