53 Maximum Subarray

1. Question

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.

2. Implementation

(1) DP (Kadane Algorithm)

class Solution {
    public int maxSubArray(int[] nums) {
        int max = nums[0];
        int sum = nums[0];

        for (int i = 1; i < nums.length; i++) {
            sum = sum >= 0 ? sum + nums[i] : nums[i];
            max = Math.max(max, sum);
        }
        return max;
    }
}

3. Time & Space Complexity

DP (Kadane Algorithm): 时间复杂度O(n), 空间复杂度O(1)

Last updated