題目
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;
}
};