PythonIntermediate
Algorithms and Data Structures
Algorithms and data structures to ace technical interviews: complexity, arrays, hash maps, trees, graphs, dynamic programming. BigTech-style problems, runnable in the browser.
14 chapters56 lessons52 challenges
Course curriculum
Chapter 1: Complexity (Big-O)
- ▸Why complexity matters
- ▸Big-O notation
- ▸Space complexity
- ▸Analyzing an algorithm
Chapter 2: Arrays and strings
- ▸Arrays
- ▸Two pointers
- ▸Sliding window
- ▸String tricks
Chapter 3: Hash maps and sets
- ▸The hash map
- ▸Counting frequencies
- ▸The set: membership and duplicates
- ▸The complement pattern
Chapter 4: Stacks and Queues
- ▸The stack (LIFO)
- ▸The queue (FIFO) and the deque
- ▸Balanced brackets
- ▸Evaluating with the stack
Chapter 5: Linked Lists
- ▸What a linked list is
- ▸Traversing and operating
- ▸Reversing a linked list
- ▸Fast & slow pointers
Chapter 6: Trees
- ▸Binary trees
- ▸Traversals (DFS)
- ▸The BST
- ▸BFS and depth
Chapter 7: Heaps and Priority Queues
- ▸What a heap is
- ▸heapq in Python
- ▸Top-K problems
- ▸The priority queue
Chapter 8: Graphs
- ▸What a graph is
- ▸BFS on graphs
- ▸DFS on graphs
- ▸Graph applications
Chapter 9: Recursion and backtracking
- ▸Recursion
- ▸Thinking recursively
- ▸Backtracking
- ▸Generating subsets
Chapter 10: Binary search
- ▸Binary search
- ▸The implementation
- ▸Variants and bisect
- ▸Binary search on the answer
Chapter 11: Dynamic programming
- ▸What dynamic programming is
- ▸Memoization (top-down)
- ▸Tabulation (bottom-up)
- ▸Classic DP problems
Chapter 12: Greedy algorithms
- ▸What a greedy algorithm is
- ▸When greedy works
- ▸Greedy examples
- ▸Greedy vs DP
Chapter 13: Interview patterns
- ▸Recognizing the pattern
- ▸The main patterns
- ▸Approaching a problem
- ▸Communicating in the interview
Chapter 14: Interview problems
- ▸Sliding window in action
- ▸Interval problems
- ▸Interview checklist
- ▸Next steps
Ready to level up?
Create a free account and start now: earn XP on every challenge and climb the leaderboard.