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

[LeetCode] Maximum Subarray

时间:2014-08-29 01:18:46      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   for   问题   div   

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.

Answer:

这应该是一个动态规划问题,但是没有看过动态规划的算法。

解答的思路就是,如果新的字串更大的话,新的字串肯定包含新的节点,既然包含新的节点,那么上一节点也肯定在其中(或者肯定不在其中)。

 

public class Solution {
    public int maxSubArray(int[] A) {
        int maxSubSum = Integer.MIN_VALUE;
        int maxNowNode = 0;
        
        if (A.length == 0) return 0;
        
        for (int i=0; i<A.length; i++) {
            maxNowNode = maxNowNode>0? maxNowNode + A[i] : A[i];
            maxSubSum = Math.max(maxSubSum, maxNowNode);
        }
        
        return maxSubSum;
    }
}

 

[LeetCode] Maximum Subarray

标签:style   blog   http   color   io   ar   for   问题   div   

原文地址:http://www.cnblogs.com/yuhaos/p/3943944.html

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