方法一:遍历数组,遇到负和则抛弃之前的结果,重新积累,期间保留最大值
# -*- coding:utf-8 -*-
class Solution:
def FindGreatestSumOfSubArray(self, array):
# write code here
if not array:
return
max=array[0]
tmp=array[0]
for i in range(1,len(array)):
if tmp<0:
tmp=array[i]
else:
tmp+=array[i]
if tmp>max:
max=tmp
return max
方法二:动态规划
dp[i]表示i个数的最大和,计算dp[i]
if dp[i - 1] <= 0: dp.append(num) else: dp.append(dp[i - 1] + num)
class Solution:
def FindGreatestSumOfSubArray(self,array):
if not array:
return 0
dp = [array[0]]
i = 1
for num in array[1:]:
if dp[i - 1] <= 0:
dp.append(num)
else:
dp.append(dp[i - 1] + num)
i += 1
return max(dp)