参考书目:数据结构与算法分析C++描述(第3版) Mark Allen Weiss
书中介绍的第四种方法O(N)时间复杂度比较难理解,所以在看懂之后写了注释,比较难理解的位置是thisSum < 0的情况,如果当前和小于零,则当前和重置为零。即重置起点,置零意味着将i向前提到当前处也即thissum为计数起点maxsum已经记住过去最大值的终点
1. int maxSubSum (int data[])
2. {
3. int maxSum=0;
4. int thisSum=0;
5. for(int i=0; i<sizeof(data); i++)
6. {
7. thisSum += a[i];
8. if(thisSum > maxSum)
9. //如果当前的和大于最大和,则替换覆蓋
10. maxSum = thisSum;
11. else if(thisSum < 0)
12. //如果当前和小于零,则当前和重置为零。即重置起点,置零意味着将i向前提到当前处也即thissum为计数起点maxsum已经记住过去最大值的终点
13. thisSum = 0;
14. }
15. return maxSum;
16. }
17.