首页 > 代码库 > LeetCode Maximum Subarray

LeetCode Maximum Subarray

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