题目:
输入一个整型数组,数组里有正数也有负数。数组中有一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
思路一:根据数组规律
int FindGreatestSumOfSubArray(
vector<int> array )
{
int curSum =
0;
int greatestSum =
0x80000000;
if (
array.empty() )
{
return -
1;
}
for (
int i =
0; i <
array.size(); i++ )
{
if ( curSum <=
0 )
{
curSum =
array[i];
}
else
{
curSum +=
array[i];
}
if ( curSum > greatestSum )
greatestSum = curSum;
}
return greatestSum;
}