←All towers

Raahaao Code: Algorithms & Data Structures

Write code that stays fast, and pass the coding interview.

10+ hours of lessons · 2 projects · €35

Helps you prepare for: Technical coding interviews

Or get it in a monthly plan from €3.46 a week (billed €15 monthly) →

You need an account to open any lessons. Without one you can browse the towers and prices.

Pay in

What you'll learn, floor by floor

  1. 1

    Measuring code (Beginner)

    • What an algorithm costs
    • Big-O notation
    • Arrays and strings
  2. 2

    Core structures (Beginner)

    • Hash maps and sets
    • Stacks and queues
    • Linked lists
  3. 3

    Searching and sorting (Intermediate)

    • Binary search
    • Sorting algorithms
    • Recursion and divide and conquer
  4. 4

    Trees and graphs (Intermediate)

    • Trees and binary search trees
    • Heaps and priority queues
    • Graphs: BFS and DFS
  5. 5

    Interview-ready (Job-ready)

    • Dijkstra and weighted paths
    • Dynamic programming
    • Greedy algorithms and sliding windows
    • The interview playbook

The two rooftop projects

Route planner

Build a route planner for a small train network. Represent stations and track costs in a graph, then find routes by number of stops or ticket cost.

  • build_graph(edges) builds an undirected weighted graph from (station_a, station_b, cost) edges
  • fewest_stops(g, a, b) returns a path with the fewest edges, or None when b is unreachable
  • cheapest_route(g, a, b) returns (total_cost, path) for the lowest-cost route, or None when b is unreachable
  • reachable_within(g, a, budget) returns all stations whose cheapest cost from a is at most budget, including a, in alphabetical order
  • When equally good routes exist, fewest_stops and cheapest_route choose the alphabetically earliest full station path

Autocomplete engine

Build an autocomplete engine that stores a weighted vocabulary and finds words by prefix. You will use a trie to keep shared prefixes together and a heap to rank popular matches.

  • Trie.insert(word, weight) stores or updates a word with its weight, and Trie.contains(word) reports whether the complete word exists
  • Trie.starts_with(prefix) returns all complete matching words in alphabetical order
  • Trie.top_k(prefix, k) returns up to k (word, weight) pairs ordered by descending weight then alphabetical word, using a heap
  • Trie.delete(word) removes a complete word without removing other words that share its prefix, and returns whether a word was removed
  • edit_distance(a, b) returns the Levenshtein edit distance using dynamic programming
  • suggest(word, k) returns up to k words from WORD_LIST ordered by edit distance then alphabetically

Questions

Do I need to install anything?

No. Everything runs in your browser. For the projects you can also work on your own computer and upload your files.

Can I skip what I already know?

Yes. Once you own a tower, each floor has a skip test: score 8 out of 10 and that floor opens.

What is the refund policy?

Refunds within 5 days of purchase. After 5 days, no refunds or returns.

Do I keep access?

Yes. A tower you buy is yours, with no subscription.

Refund policy