One idea at a time, then the problems that use it
A path from counting digits to graphs, numbered so you always know where you are. Each lesson explains a single technique, shows it running step by step, and hands you the problems where it is the right answer. C, C++, Java and Python are only ways of talking to a computer. The thinking is what carries across.
36 lessons, in order. Start at one, or start where you are stuck.
Your learning map
Sign in to keep your progress on the map.
Arrays and hashing
step 12Two pointers and windows
step 14Searching
step 18Linked lists
step 20Stacks and queues
step 23Trees
step 26Heaps
step 27Graphs
steps 29 to 31Graphs: things, and the connections between them
Intermediate11 min readDrop the rule that every node has one parent and you have a graph. Two ways to walk one, and the choice decides what you can prove.
0 of 4 practice problems solved
Breadth first and depth first: the same loop, a different container
Intermediate13 min readBoth walks visit everything reachable. Only one of them answers questions about shortest, and the difference between them is which end you take things off.
0 of 4 practice problems solved
Topological order: doing things in an order that works
Intermediate16 min readCourses with prerequisites, build steps, task lists. If the dependencies contain a cycle there is no valid order, and finding that out is the same algorithm.
0 of 3 practice problems solved