[leetcode]Maximum Subarray

经典的最大子段和

状态表示f[i]表示以A[i]结尾的最大子段和是多少.

可想而知,如果f[i-1] > 0

那么是对第i位是有贡献的。

f[i]  = f[i-1] + A[i]

不然...f[i]= A[i]

 

class Solution {
public:
    int maxSubArray(int A[], int n) {
        vector<int> f(n , 0);
        f[0] = A[0];
        
        int ans = f[0];
        for(int i = 1 ; i < n ; i++){
            if(f[i - 1] > 0) f[i] = f[i-1] + A[i];
            else f[i] = A[i];
            ans = max(ans , f[i]);
        }
        return ans;
    }
};

 

你可能感兴趣的:(LeetCode)