def get_largest_sum_subarray(array):
assert len(array) > 1
max_sum = second_max_sum = current_sum = array[0]
start = end = 0
for i in range(1, len(array)):
if current_sum < 0:
current_sum = 0
start = i
current_sum += array[i]
if current_sum > max_sum:
# second_max_sum = max_sum
max_sum = current_sum
end = i
# elif current_sum > second_max_sum:
# second_max_sum = current_sum
# print max_sum,second_max_sum,current_sum
if max_sum < -1:
raise Exception("max sum is less than 1")
# if start == 0 and end == len(array) - 1:
# max_sum = second_max_sum
return start,end,max_sum
l=[10,-9,10,-9,10]
l1=[4,-9,3,-2,4,-12]
start,end,re = get_largest_sum_subarray(l)
print start,end,re
最大子数组
最新推荐文章于 2024-01-31 18:52:05 发布