1. 程式人生 > 其它 >劍指offer之連續子陣列的最大和

劍指offer之連續子陣列的最大和

技術標籤:八股文日記

題目描述

輸入一個整型陣列,數組裡有正數也有負數。陣列中的一個或連續多個整陣列成一個子陣列。求所有子陣列的和的最大值。要求時間複雜度為 O(n).

示例1

輸入

[1,-2,3,10,-4,7,2,-5]

返回值

18

說明

輸入的陣列為{1,-2,3,10,—4,7,2,一5},和最大的子陣列為{3,10,一4,7,2},因此輸出為該子陣列的和 18。 
class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
        int len=array.size();
        vector<int> dp(len+1, 0);
        int rt=array[0];
        for(int i=1; i<=len; i++)
        {
            dp[i] = max(array[i-1], array[i-1]+dp[i-1]);
            rt = max(rt, dp[i]);
        }
        return rt;
    }
};