← All problems

53. Maximum Subarray

MediumOpen on LeetCodeProblem statement

Problem Statement

53. Maximum Subarray

Medium


Given an integer array nums, find the subarray with the largest sum, and return its sum.

 

Example 1:

Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
Output: 6
Explanation: The subarray [4,-1,2,1] has the largest sum 6.

Example 2:

Input: nums = [1]
Output: 1
Explanation: The subarray [1] has the largest sum 1.

Example 3:

Input: nums = [5,4,-1,7,8]
Output: 23
Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.

 

Constraints:

 

Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

Java

Source file
class Solution {
    public int maxSubArray(int[] nums) {
        int cumsum = 0, maxm = -Integer.MIN_VALUE;
        for (int lt = 0, rt = 0; rt < nums.length; rt++) {
            while (cumsum < 0 && lt <= rt)
                cumsum -= nums[lt++];
            cumsum += nums[rt];
            // System.out.println(cumsum + "\t->" + nums[lt] + "\t" + nums[rt]);
            maxm = Math.max(cumsum, maxm);
        }
        return maxm;
    }
}