首页 > 其他 > 详细

Leetcode-Maximum Subarray

时间:2014-11-27 06:43:33      阅读:302      评论:0      收藏:0      [点我收藏+]

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 }

 

Leetcode-Maximum Subarray

原文:http://www.cnblogs.com/lishiblog/p/4125522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!