本文记录最大连续子序列和问题的两种解法:前缀和方法 和 动态规划方法。

从一个可能包含负数的整数数组中,找出其连续子数组的和的最大值。

前缀和 sum(i) 是指以位置 i 结尾的前缀子数组的求和结果:

要使右侧区间内数字之和最大, 势必要求左侧前缀和 sum(i-1) 最小。

也就是,要找出 j 左边的前缀和的最小值,它可以在计算前缀和的过程中记录下来。

最后,对所有 j 找出其右侧区间的最大和 ,记录其中最大的即结果。

任何连续数组,都可以表达为:以位置 i 结尾的连续数组。

假设函数 dp(i) 是所有以位置 i 结尾的连续数组的和的最大值。