LeetCode 53: Maximum Subarray Solution

Master LeetCode problem 53 (Maximum Subarray), a medium challenge, with our optimized solutions in Java, C++, and Python. Explore detailed explanations, test your code in our interactive editor, and prepare for coding interviews.

Problem Explanation

Explanation:

  • Algorithmic Idea:

    • We can solve this problem using Kadane's algorithm, which is an efficient way to find the maximum subarray sum.
    • The main idea is to iterate through the array and keep track of the maximum subarray sum ending at each position.
    • At each index, we either include the current element in the sum or start a new subarray from the current element.
    • We update the maximum sum found so far by comparing it with the sum ending at the current index.
  • Step-by-Step Iterations:

    • For the input array [-2, 1, -3, 4, -1, 2, 1, -5, 4]:
      • Index 0: Current sum = -2, Max sum = -2
      • Index 1: Current sum = 1, Max sum = 1 (start a new subarray)
      • Index 2: Current sum = -2, Max sum = 1
      • Index 3: Current sum = 4, Max sum = 4 (start a new subarray)
      • Index 4: Current sum = 3, Max sum = 4
      • Index 5: Current sum = 5, Max sum = 5
      • Index 6: Current sum = 6, Max sum = 6
      • Index 7: Current sum = 1, Max sum = 6
      • Index 8: Current sum = 5, Max sum = 6
  • Time Complexity: O(n) - We iterate through the array once.

  • Space Complexity: O(1) - We use constant extra space for variables.

:

Solution Code

class Solution {
    public int maxSubArray(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        
        int maxSum = nums[0];
        int currentSum = nums[0];
        
        for (int i = 1; i < nums.length; i++) {
            currentSum = Math.max(nums[i], currentSum + nums[i]);
            maxSum = Math.max(maxSum, currentSum);
        }
        
        return maxSum;
    }
}

Try It Yourself

Loading code editor...

Related LeetCode Problems

Frequently Asked Questions

How to solve LeetCode 53 (Maximum Subarray)?

This page provides optimized solutions for LeetCode problem 53 (Maximum Subarray) in Java, C++, and Python, along with a detailed explanation and an interactive code editor to test your code.

What is the time complexity of LeetCode 53 (Maximum Subarray)?

The time complexity for LeetCode 53 (Maximum Subarray) varies by solution. Check the detailed explanation section for specific complexities in Java, C++, and Python implementations.

Can I run code for LeetCode 53 on DevExCode?

Yes, DevExCode provides an interactive code editor where you can write, test, and run your code for LeetCode 53 in Java, C++, or Python.

Back to LeetCode Solutions