参看网页

http://www.tuicool.com/articles/UzmU7jb


1. 053

Maximum Subarray


2.算法

  • DP:O(n)

http://www.cnblogs.com/grandyang/p/4377150.html

step:状态转移方程:sum[i]=max{sum[i-1]+a[i],a[i]}

max({sum(i)})

step:subarray的总体和大于0,认为其对后面有贡献,加入到之前的subarray

step:subarray的总体和小于0,认为其对后面无贡献,则另起一个subarray


3. 代码


// O(n) solution
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int res = nums[0], tmp = res;
        for (int i = 1; i < nums.size(); ++i) {
            tmp = max(tmp + nums[i], nums[i]);
            res = max(res, tmp);
        }
        return res;
    }
};

results matching ""

    No results matching ""