Neetcode 150 - Maximum Subarray

1. Input, Output, Contrains

  1. Input:
nums = [-2,1,-3,4,-1,2,1,-5,4]
  1. Output:
An integer  the maximum possible sum of any contiguous subarray.
  1. Constraints:
  • 1 ≤ len(nums) ≤ 10⁵

  • -10⁴ ≤ nums[i] ≤ 10⁴

2. Dry run

Index	num	Current Subarray	Sum	Max Sum
0	-2	[-2]	-2	-2
1	1	[1] (restart here since -2+1 < 1)	1	1
2	-3	[1,-3]  sum = -2	1	1
3	4	[4] (restart)	4	4
4	-1	[4,-1]	3	4
5	2	[4,-1,2]	5	5
6	1	[4,-1,2,1]	6 	6
7	-5	[4,-1,2,1,-5]	1	6
8	4	[4]	4	6

3. Naive Solution — O(N^2)

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        n = len(nums)
        max_sum = float('-inf')

        for i in range(n):
            curr_sum = 0
            for j in range(i, n):
                curr_sum += nums[j]
                max_sum = max(max_sum, curr_sum)
        return max_sum

4. Optimial Solution — Kadane’s Algorithm (O(N))

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        curr_sum = max_sum = nums[0]
        for num in nums[1:]:
            curr_sum = max(num, curr_sum + num)
            max_sum = max(max_sum, curr_sum)
        return max_sum

Last Updated On October 14, 2025