LeetCode-Maximum Subarray[dp]

Posted Little_Lu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-Maximum Subarray[dp]相关的知识,希望对你有一定的参考价值。

Maximum Subarray

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.

click to show more practice.

More practice:

 

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

 

标签: Divide and Conquer Array Dynamic Programming

分析:最大连续子和问题,我们可以从头遍历数组,遍历到元素 i 时有两个选择:

1.如果它大于等于零时,那就将它与前面的子和sum相加。

2.如果它小于零时,则由该元素作为下一个子和sum的开头元素

在遍历数组的同时记录最大的子和sumj即为最大连续子和;

这里用动态规划的方法解决,设dp[i]表示从首元素到元素i的最大连续子和,所以有状态转移方程为:

dp[i]=max(dp[i-1]+array[i],array[i]);

参考代码:

 1 public class Solution {
 2     public int maxSubArray(int[] A) {
 3         int len=A.length;
 4         int ret=Integer.MIN_VALUE;
 5         int dp=0;
 6         for(int i=0;i<len;i++){
 7             dp=Math.max(dp+A[i], A[i]);
 8             ret=Math.max(ret, dp);
 9         }
10         return ret;
11     }
12 }

 


以上是关于LeetCode-Maximum Subarray[dp]的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-Maximum Subarray-53

leetcode-Maximum Product Subarray-152

LeetCode-Maximum Product of Word Lengths

[LeetCode] 560.Subarray Sum Equals K_Medium tag: Array, Subarray, prefix Sum

[Leetcode] Maximum Subarray

LeetcodeMaximum Product Subarray