// data structures & algorithms, visualized

Understand the algorithm.
Not just the answer.

Step through real code, learn the patterns behind the problems you'll meet, and let spaced review keep it in your head.

// try it: Two pointers

Open the full lesson →
step 1 / 11
1function twoSum(nums, target) {2  let lo = 0, hi = nums.length - 1;3  while (lo < hi) {4    const sum = nums[lo] + nums[hi];5    if (sum === target) return [lo, hi];6    if (sum < target) lo++;7    else hi--;8  }9  return null;10}
target
= 10
  1. 1lo
  2. 3
  3. 4
  4. 6
  5. 8
  6. 11hi

The array is sorted. lo starts at the left end, hi at the right end.

Built for how memory actually works.

01 / visualize

Step through every line

Watch variables change as the code runs, forward and back, one step at a time.

02 / recognize

Spot the pattern first

Drills train you to name the pattern before you write code.

03 / retain

5-minute daily review

Spaced repetition built in, capped so the queue never explodes.

04 / progress

One clear path

Big-O to dynamic programming, in order. Track patterns mastered, not streaks.

The path

9 modules, each one building on the last.

  1. 01Big-O: measuring growthfree
  2. 02Arrays and hash mapsfree
  3. 03Sorting basicsfree
  4. 04Two pointers and sliding windowfree
  5. 05Stacks, queues and linked listsfree
  6. 06Recursionfree
  7. 07Binary searchfree
  8. 08Trees: BFS and DFSfree
  9. 09Dynamic programmingfree

// new lessons ship regularly. Modules marked soon are on the way.

Pricing

Start free. Upgrade when it clicks.

free$0
  • Every free lesson, step by step
  • Code in every supported language
  • Daily review
Start free
proComing soon
  • Everything in free
  • Every lesson unlocked
  • Unlimited pattern drills
  • Mastery insights
Coming soon