Kadane's Algorithm is a powerful technique used to solve the Maximum Subarray Problem. This lesson is designed to guide you step-by-step through understanding the problem, exploring different solutions, and finally, mastering Kadane's Algorithm itself. Here's what we'll cover:

1) Kadane’s Algorithm at a Glance (Why this matters)
- What is it? A lightning-fast way to find the most profitable “streak” in an array—i.e., the contiguous subarray with the highest sum.
- Where it shines: Stock gains over days, longest “winning run” in signal processing, anytime you care about the best contiguous chunk.
- Why people love it: It runs in O(n) time with O(1) extra space. Translation: fast and tiny.
2) Meet the Maximum Subarray Problem (with a picture in your head)
- The problem: Given an array (which can include negatives), find the contiguous slice with the biggest sum.
- Mental model: Imagine walking a trail with ups (+) and downs (–). Your goal is to pick one continuous stretch that climbs the most overall.
- Quick example:
[-2, 1, -3, 4, -1, 2, 1, -5, 4]→ best subarray is[4, -1, 2, 1]with sum 6.
3) Brute Force (the “try everything” approach)
- Idea: Check every possible start and end index, compute each sum, keep the best.
- Pros: Dead simple, great for understanding the problem.
- Cons: Slow when arrays get big.
- Time complexity: O(n²) sums (or O(n³) if you recompute sums every time).
4) Brute Force in Code (get it working first)
- We’ll write the straightforward version so you can see the mechanics: nested loops, track a running best, done.
- This gives you a baseline to compare against Kadane’s speedup later.
5) Kadane’s Algorithm (the elegant upgrade)
Core idea: As you scan left → right, keep a running sum.
- If the running sum ever goes negative, drop it and start fresh at the next element.
- Track the best sum you’ve seen along the way.
Why it works: A negative running sum can only hurt future totals—so reset early and often.
Steps you’ll follow:
- Initialize
bestandcurrentwith the first element. - For each next number
x:current = max(x, current + x)best = max(best, current) - Return
best.
- Initialize
Time complexity: O(n). One pass. No extra storage. Chef’s kiss.
6) Kadane in Code (concise and fast)
- We’ll implement Kadane in a few popular languages so you can copy, paste, and profit (academically).
- You’ll see it’s 3–5 lines for the core logic—clean, tight, and interview-ready.
What you’ll walk away with
By the end, you’ll:
- Understand the Maximum Subarray Problem clearly.
- Have a working brute-force solution (for learning and testing).
- Master Kadane’s Algorithm and know why it’s optimal.
- Be ready to spot and solve “best contiguous streak” problems on sight.


