最大子段和问题是指,给定一个序列,找出其中和最大的连续子段。例如,对于序列 [1, -2, 3, 10, -4, 7, 2, -5],最大子段和为 18,因为最大的连续子段是 [3, 10, -4, 7, 2]。
在分析问题时,我们可以使用值为负的前缀不可能属于最大子段和的组成部分这一性质。
例如,对于序列 [1, -2, 3, 10, -4, 7, 2, -5],假设我们现在到了下标为 5 的位置,即数字 -4。由于值为负的前缀不可能属于最大子段和的组成部分,我们可以直接忽略前面的部分。因此,我们可以从当前位置开始,继续计算最大子段和。
基于这个性质,我们可以得出以下算法:
- 从左