问题描述
输入一个整形数组,求数组中连续的子数组使其和最大。比如,数组x
应该返回 x[2..6]的和187.
Kadane算法简介
对于连续子数组求取最大和问题有很多种方法,时间复杂度和空间复杂度都很优秀的当属Kadane算法,该算法又被称为扫描法,该算法用到了一个启发式规则:如果前面一段连续子数组的和小于0,那么就丢弃它。我发现该算法无法正确的应用到全负数的数组中,并且只是单单的返回了连续子数组的最大和,并没有给出区间范围。
改善
对扫描算法加以适当的完善(特指功能上的,改善之后性能消耗的更多了),代码如下:
int GetLargestCumulationOfContinuousSubArray
{
if(size <= 0) return 0;
int maxSofar = data[0];
int