Algorithms

Learn Algorithms and Data Structures by Solving Challenges. Pick a topic and Learn by Doing!

Basic Data Structures
Data Structures
Nodes
Lists
Complete LinkedList
Dynamic Arrays
Stacks
Queues
Stack and Queue Challenges
Min Stack
Sliding Maximum
Balanced Brackets
Transposition
Stacks or Recursion
Recursion
Basic Recursion
Binary Search
Divide and Conquer
Towers of Hanoi - Part 1
Towers of Hanoi - Part 2
Backtracking Recursion
Trees and Graphs
Trees
Tree Traversal
Binary Search Tree
Graphs
Depth-First Search
Breadth-First Search
Tree and Graph Challenges
How Tall is the Tree?
Is it a Search Tree?
Is it balanced?
Connected Components
Find the Cycles
The Greatest Peaks
Explorer Maze Escape
Maps Sets and Hashes
Sets
Maps
HashTables
HashSet Data Structure
HashMap Data Structure
More Practice
Sorting Algorithms
Introduction to Challenges
Insertion Sort 1
Insertion Sort Itself
Correctness and the Loop Invariant
Running Time
Counting Sort 1
Simple Counting Sort
Prepare for Full Counting Sort
The Full Counting Sort
QuickSort1
Simple Quick Sort
Quick-Sort Advanced
Quick Sort Running Time
Sorting Challenges
Merge Sort I
Full Merge Sort
Index Match
Time Scheduler
Maximum Time Range
Smallest Difference
The Median
Find the Duplicates
Advanced Graph Algorithms
Weighted Graphs
Shortest Path on a Weighted Graph
Minimum Spanning Tree
Algorithms for Interviews
Intro
Basic Programming Problems
Running Time and Big-O
How to Answer Questions
Algorithm-Solving Strategies
Data Structures
Trees and Graphs
Recursion and Sorting
Software Design
Additional Resources
Rosetta Challenges
ABC Problem
Cut a Rectangle
Make Change
Closest Pair
Equilibrium index
Visual Chart
Contact Us