連續子數組的最大和(20)

題目

在這裏插入圖片描述


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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章