题目描述
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为
。
思路:
本题可以用简单的动态规划完成,用
记录以a[i]为结尾的子数组的最大和,如果前面i-1的子数组的最大和为负值,那么全部抛弃,
就等于当前数组值。同时用res维护得到的数组最大和的最大值,有以下关系:
class Solution:
def FindGreatestSumOfSubArray(self, array):
# write code here
maxsum = array[0]
res = maxsum
for i in range(1, len(array)):
maxsum = max(maxsum + array[i], array[i])
res = max(maxsum, res)
return res