参考书目:数据结构与算法分析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.

本文详细解析了数据结构与算法分析中一种O(N)时间复杂度的方法,特别是针对求解子数组最大和的问题。通过重置当前和为零的方式优化算法,使得算法能够高效地找到最大子数组和。
21

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



