题目
1、分析
从数组的第一个数字开始加,当加上后一个数字之后和变成负数,则舍弃前面的数组,并将前面未变成负数的和保存给一个累加的值。说明子数组是从下一个元素开始的。然后从下一个元素开始重新往后加,并将暂时的和与之前保存的最大和进行比较。
2、代码
class Solution {
public:
int FindGreatestSumOfSubArray(vector<int> array) {
if(array.size()<=0)
return 0;
//最大的和用数组的第一个元素来进行初始化,防止数组的元素全为负数这种情况
int sum=array[0];
// 当前的和
int curSum=0
for(int i=0;i<array.size();++i)
{
if(curSum<=0)
{
curSum=array[i];
}
else
curSum+=array[i];
// 若当前的和大于之前保存的和,则进行替换
if(curSum>sum)
sum=curSum;
}
return sum;
}
};