Neetcode 150 - Maximum Subarray
1. Input, Output, Contrains
- Input:
nums = [-2,1,-3,4,-1,2,1,-5,4]
- Output:
An integer — the maximum possible sum of any contiguous subarray.
- 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