53.Maximum Subarray

思路:
  • DP,设置数组res,存储以i结尾的连续数组和的最大值。如果i之前子数组最大和小于等于0,那么res[i] = nums[i],否则res[i] = nums[i] + res[i-1]。复杂度为\(O(n)\)
class Solution {
public:
    int maxSubArray(vector<int>& nums) {
        int sum = INT_MIN;
        vector<int> res(nums.size(),0);
        res[0] = nums[0]; 
        for(int i = 1; i < nums.size(); i++){
            if(res[i-1] > 0) res[i] = res[i-1] + nums[i];
            else res[i] = nums[i];
        }
        for(int i = 0; i < res.size(); i++){
            if(res[i] > sum) sum = res[i];
        }
        return sum;
    }
};
posted @ 2017-06-08 09:55  UniMilky  阅读(108)  评论(0编辑  收藏  举报