Back to blog
Problem Solving with DSA

~/blog/series

Problem Solving with DSA

A Python-first walkthrough of the data structures and techniques that show up in coding interviews and real systems work.

What this series is

A working knowledge of data structures, built by implementing them. Each post covers a single concept — a node, a traversal, a sort, a recurrence — with a runnable Python implementation and a discussion of where the obvious approach breaks.

The path follows the Coding Ninjas DSA curriculum, but the order and the explanations are mine. The code is the code I would have wanted to read the first time.

How to read it

If you're prepping for interviews, the tree, graph, and dynamic programming sections are where you should slow down. If you're building real systems, the hashmaps and linked list sections are the ones that pay rent.

The posts are short on purpose. Most are 200-400 lines. Read one, run the code, move on.

What you'll need

  • Python 3.10+
  • Comfort with classes and recursion (the recursion posts will help if you're shaky)
  • A terminal

What's covered

Thirteen sections, each a self-contained mini-curriculum:

  1. Fundamentals — flowcharts, pseudocode, and the basics of problem solving
  2. Arrays — the data structure you already know, and what it can't do
  3. Searching and Sorting — the algorithms you'll use for the rest of your career
  4. Linked List — pointer mechanics, one operation at a time
  5. Linked List Advanced — two pointers, reversal, merge sort
  6. Stack — LIFO, built two ways
  7. Queues — FIFO, built two ways
  8. Generic Trees — n-ary trees, input and traversal
  9. Binary Tree — the tree that shows up everywhere
  10. Binary Search Tree — sorted storage with O(log n) operations
  11. Hashmaps — average O(1) lookup, and the implementation details that bite
  12. Graphs — adjacency lists and matrices, BFS, DFS
  13. Dynamic Programming — recursion with a memory

Start at the top. Skip ahead if you already know it.

Posts in this series