输入一个整型数组,数组里有正数也有负数,数组中一个或者连续的多个整数组成一个子数组。求所有子数组和的最大值,要求时间复杂度为O(n)
int FindGreatestSumOfSubArray(int *pData, int nLength)
{
assert (pData == NULL || nLength <= 0);
int nCurSum = 0;
int nGreatestSum = 0x80000000;
for (int i = 0; i < nLength; ++i)
{
if (nCurSum <= 0)
nCurSum = pData[i];
else
nCurSum += pData[i];
if (nCurSum > nGreatestSum)
nGreatestSum = nCurSum;
}
return nGreatestSum;
}