// 面试题42:连续子数组的最大和
// 题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整
// 数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。
static bool max_sum(const std::vector<int>& arr, int& out_sum)
{
if(arr.size()<1)
{
return false;
}
int sum = 0;
out_sum = 0x80000000;
for(auto i: arr)
{
if(sum <= 0)
{
sum = i;
}
else
{
sum += i;
}
if(sum > out_sum)
{
out_sum = sum;
}
}
return true;
}