方法一:遍历数组,遇到负和则抛弃之前的结果,重新积累,期间保留最大值
# -*- 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)

本文介绍了两种高效算法来寻找数组中连续子数组的最大和,包括遍历法和动态规划法,通过实例代码展示了如何实现这些算法。
1617

被折叠的 条评论
为什么被折叠?



