思路:
其实和求数组中的最大值差不多,需要维护一个最大值,然后和当前子数组的和对比。只要当前子数组的和是大于0的,对于后面的数据就是有用的。如果当前子数组的和小于 0 了,则丢弃这个子数组,从下一个元素重新计算
代码:
In [1]: def get_max_sum_of_sub_array(array):
...: cur_sum, max_sum=0,0
...: for i in array:
...: cur_sum +=i
...: cur_sum = max(0, cur_sum)
...: max_sum = max(cur_sum, max_sum)
...: return max_sum
In [2]: get_max_sum_of_sub_array([-2,1,-3,4,-1,2,1,-5,4])
Out[2]: 6