标签:style blog io ar color os sp for on
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
.
Analysis:
We define the state d[i] as the the largest sum we can get for subarrays the end at i. We then have the formula:
if d[i-1]<0, then we will choose to just select A[i] at i, d[i]=A[i]; otherwise d[i]=A[i]+d[i-1];
Solution:
1 public class Solution { 2 public int maxSubArray(int[] A) { 3 int len = A.length; 4 if (len==0) return 0; 5 int[] d = new int[len]; 6 d[0] = A[0]; 7 int max = d[0]; 8 for (int i=1;i<len;i++){ 9 if (d[i-1]<0) 10 d[i]=A[i]; 11 else 12 d[i]=A[i]+d[i-1]; 13 if (d[i]>max) max = d[i]; 14 } 15 16 return max; 17 } 18 }
标签:style blog io ar color os sp for on
原文地址:http://www.cnblogs.com/lishiblog/p/4125522.html