LeetCode: Maximum Subarray

思路:很基础的动态规划题,可以用2个中间变量保存结果,curRet 保存包含第i个元素的最大连续和,则计算包含第 i + 1个元素的最大连续和时,如果curRet < 0 ,则第i+1只需要考虑A[i+1] 元素,即更新curRet = A[i+1], 否者,更新curRet = A[i+1] + curRet; 中间过程的需要保存一个最大值maxRet = max(maxRet, curRet);

code:

class Solution {
public:
    int maxSubArray(int A[], int n) {
        if(n<=0)return 0;
        int curRet = A[0], ret = curRet;
        for(int i=1;i<n;i++){
            curRet = curRet < 0 ? A[i] : (curRet + A[i]);
            ret = max(ret,curRet);
        }
        return ret;
    }
};


你可能感兴趣的:(LeetCode: Maximum Subarray)