美文网首页动态规划
53.Maximum Subarray

53.Maximum Subarray

作者: exialym | 来源:发表于2016-11-08 11:01 被阅读3次

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4],the contiguous subarray [4,-1,2,1] has the largest sum = 6.
这里的方法利用一个dp数组,数组里保存的是以第i个元素为结尾的最大和子数组的和,那么dp[i+1]就是dp[i] > 0 ? nums[i+1] + dp[i] :nums[i+1]

var maxSubArray = function(nums) {
    var num = nums.length;
    if (num===0) 
        return 0;
    var dp = [nums[0]];
    var max = nums[0];
    for(var i = 0;i < nums.length;i++) {
        dp[i] = dp[i-1] > 0 ? nums[i] + dp[i-1] :nums[i];
        max = Math.max(dp[i],max);
    }
    return max;
};

相关文章

网友评论

    本文标题:53.Maximum Subarray

    本文链接:https://www.haomeiwen.com/subject/owpouttx.html