题目:
输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
实现代码:
int GetConsequenceGreatestSum(int* pData, int size)
{
if (nullptr == pData || size <= 0) return INT_MIN; // INIT_MIN表示输入无效
int curSum = 0;
int greatestSum = 0;
for (int idx = 0; idx < size; ++idx)
{
if (curSum <= 0) curSum = pData[idx];
else curSum += pData[idx];
if (curSum > greatestSum) greatestSum = curSum;
}
return greatestSum;
}