一、最大子段和
设F(i) 为 数组中以a[i]结尾的最大子段和, 那么只需要遍历 0~n 找到max{F(0) F(1) ...... F(n-1)}
F(i) = a[i] F(i-1) < 0
F(i-1) + a[i]
二 、最大环形数组子段和
思路一:把环形最大子段和可以看做两部分。 第一部分——正常最大子段和,第二部分——跨越a[0] 和 a[n-1]的最大子段和。 那么第一部分可以用O(n) 求出,第二部分我们
从a[0] 开始计算 0~n-2 的最大和,记录结束位置position1。 再从a[n-1] 开始计算 n-1~1的最大和,记录结束位置 position2。
position2 > position1 则第二部分最大和 a[0] + ... a[position1] + a[position2] + ...a[n-1]
position2 <= position1 则第二部分最大和 a[