您的位置:首页 > 其它

0058 连续子数组的最大和

2016-08-14 17:59 351 查看
今天在牛客上做的一题,求连续子数组的最大值。

思路:

1)当当前和的值小于0,则丢弃,以下一个值作为新起点求和;

2)如果当前和的值大于记录的最大值,则更新最大值。

代码如下:

int FindGreatestSumOfSubArray(vector<int> array) {
if(array.empty())
return 0;
int maxSumOfSubArray = std::numeric_limits<int>::min();//初始化为计算机整型最小值
int currentSum = 0;
int start=0;
int len = array.size();
while(start<len)
{
if(currentSum<=0)//和小于0则放弃前面记录的和,因为前面已经成为负担,不需要
currentSum = array[start];
else
currentSum += array[start];

if(currentSum > maxSumOfSubArray)
maxSumOfSubArray = currentSum;
++start;
}
return maxSumOfSubArray;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  连续子串 最大值