Kadane’s Algorithm: Maximum Subarray Sum

💡Strategies for Solving This Problem

Understanding Kadane's Algorithm

Kadane's algorithm finds the contiguous subarray with the largest sum in O(n) time. It's a classic dynamic programming problem and one of the most frequently asked interview questions.

Problem Statement

Given an array of integers, find the contiguous subarray with the maximum sum.

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

Naive Approach: O(n²) or O(n³)

Check all possible subarrays - too slow for large inputs.

Kadane's Key Insight

At each position, decide: Should I extend the previous subarray or start fresh here?

If current_sum + nums[i] < nums[i], start new subarray at i.

Algorithm Steps

  1. Initialize: max_sum = nums[0], current_sum = nums[0]
  2. For each element from index 1:
    • current_sum = max(nums[i], current_sum + nums[i])
    • max_sum = max(max_sum, current_sum)
  3. Return max_sum

Why It Works

Dynamic Programming:

  • dp[i] = maximum sum of subarray ending at index i
  • dp[i] = max(nums[i], dp[i-1] + nums[i])
  • Answer: max(dp)

Kadane's optimizes space from O(n) to O(1) by only tracking current and max.

Time Complexity

  • Time: O(n) - single pass through array
  • Space: O(1) - only two variables

Variations

  • Maximum Product Subarray: Track both max and min products
  • Maximum Circular Subarray: Consider wraparound
  • Maximum Sum Rectangle: 2D version using Kadane's
  • At Least K Elements: Kadane's with constraint

Common Interview Questions

  • Maximum Subarray (LeetCode 53): Classic Kadane's
  • Maximum Product Subarray (LeetCode 152): Modified for products
  • Maximum Sum Circular Subarray (LeetCode 918): Handle wraparound
  • Best Time to Buy and Sell Stock (LeetCode 121): Kadane's variant

Asked at: Amazon, Google, Facebook, Microsoft, Bloomberg

Scroll to Top