码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Maximum Subarray

时间:2014-10-30 07:12:42      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:leetcode

LeetCode 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.

思路分析:还是考察DP,定义数组sum[i]保存从A[0]到A[i]的最大sum,则sum[i] = Math.max(sum[i-1], sum[i-1] + A[i])


AC Code

public class Solution {
    public int maxSubArray(int[] A) {
        if(A.length == 0) return 0;
        if(A.length == 1) return A[0];
        int [] sum = new int [A.length];
        //sum[i] store the max sum from A[0] to A[i]
        
        sum[0] = A[0];
        
        for(int i = 1; i < A.length; i++){
            sum[i] = Math.max(sum[i-1], sum[i-1] + A[i]);
        }
        
        int maxSum = sum[0];
        for(int i = 0; i < A.length; i++){
            if(sum[i] > maxSum){
                maxSum = sum[i];
            }
        }
        
        return maxSum;
    }
}


LeetCode Maximum Subarray

标签:leetcode

原文地址:http://blog.csdn.net/yangliuy/article/details/40612121

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!