Stacks
Use stacks for expression parsing, history tracking, and LIFO problems
- Introduction to Stacks Pattern
- Valid Parentheses
- Remove All Adjacent Duplicates In String
- Min Stack
- Daily Temperatures
- Largest Rectangle in Histogram
Two Pointers
Master the two pointers technique for array and string problems
- Introduction to Two Pointers Pattern
- Pair with Target Sum
- Dutch National Flag (Sort Colors)
- Minimum Window Sort
Fast and Slow Pointers
Use two pointers at different speeds to detect cycles and find the middle of a linked list
- Introduction to Fast and Slow Pointers Pattern
- LinkedList Cycle
- Middle of the LinkedList
- Start of LinkedList Cycle
- Happy Number
- Rearrange a LinkedList
- Cycle in a Circular Array
Queues
Use queues for BFS, scheduling, and FIFO problems
- Introduction to Queues Pattern
- Number of Recent Calls
- Design Circular Queue
- Sliding Window Maximum
Sliding Window
Learn to use sliding window technique for substring and subarray problems
- Introduction to Sliding Window Pattern
- Maximum Sum Subarray of Size K
- Permutation in a String
- Longest Substring with K Distinct Characters
- Longest Substring with Same Letters after Replacement
Merge Intervals
Solve problems involving overlapping intervals
- Introduction to Merge Intervals Pattern
- Merge Intervals
- Intervals Intersection
- Conflicting Appointments
- Minimum Meeting Rooms
Tree Breadth First Search
Traverse trees level by level with breadth-first search
- Introduction to Tree Breadth First Search Pattern
- Binary Tree Level Order Traversal
- Average of Levels in Binary Tree
- Binary Tree Right Side View
- Binary Tree Zigzag Level Order Traversal
- Maximum Width of Binary Tree
- Vertical Order Traversal of a Binary Tree
Heap
Use heaps to keep the largest or smallest elements within reach
- Introduction to Heap Pattern
- Kth Largest Element in a Stream
- Last Stone Weight
Graph
Graph traversal and graph algorithms
- Introduction to Graph Pattern
- Flood Fill
- Find if Path Exists in Graph
- Number of Islands
Tree Depth-First Search
Explore tree paths down to the leaves with depth-first search
- Introduction to Tree Depth-First Search Pattern
- Path Sum
- Diameter of Binary Tree
- Path Sum II
- Binary Tree Maximum Path Sum
Coding Interview Patterns,
solved by pattern.
Pattern-based lessons, in-browser practice and step-by-step solutions in five languages. Once you recognise why a technique works, dozens of seemingly different problems become straightforward.
Includes: Coding Interview Patterns and Low Level Design.
def is_valid(s: str) -> bool: # pattern: stacks, match openers with LIFO stack, pairs = [], {')': '(', ']': '[', '}': '{'} for c in s: if c in pairs: if not stack or stack.pop() != pairs[c]: return False else: stack.append(c) return not stack
Stop memorising problems.
Start recognising structure.
Pattern first
Two Pointers, Sliding Window, BFS, DFS, and Dynamic Programming. A small set of techniques solves most interview problems.
Visual walkthroughs
Every solution is annotated with a step-by-step visualisation showing how state evolves.
Write, run, submit
In-browser editor with five language runtimes, a test runner, and a readable console.
Eight things you will walk into the
next interview with.
Covers the linear scan patterns, traversal patterns, and the dynamic programming family that appear in most FAANG-style interviews.
10 patterns. 40 problems.
Click any chapter to preview.
- 1Introduction to Stacks PatternConceptEasy
- 2Valid ParenthesesEasy
- 3Solution: Valid ParenthesesSolutionEasy
- 4Remove All Adjacent Duplicates In StringEasyPremium
- 5Solution: Remove All Adjacent Duplicates In StringSolutionEasyPremium
- 6Min StackMediumPremium
- 7Solution: Min StackSolutionMediumPremium
- 8Daily TemperaturesMediumPremium
- 9Solution: Daily TemperaturesSolutionMediumPremium
- 10Largest Rectangle in HistogramHardPremium
- 11Solution: Largest Rectangle in HistogramSolutionHardPremium
- 1Introduction to Two Pointers PatternConceptEasy
- 2Pair with Target SumEasy
- 3Solution: Pair with Target SumSolutionEasy
- 4Dutch National Flag (Sort Colors)MediumPremium
- 5Solution: Dutch National Flag (Sort Colors)SolutionMediumPremium
- 6Minimum Window SortMediumPremium
- 7Solution: Minimum Window SortSolutionMediumPremium
- 1Introduction to Fast and Slow Pointers PatternConceptEasyPremium
- 2LinkedList CycleEasy
- 3Solution: LinkedList CycleSolutionEasy
- 4Middle of the LinkedListEasyPremium
- 5Solution: Middle of the LinkedListSolutionEasyPremium
- 6Start of LinkedList CycleMediumPremium
- 7Solution: Start of LinkedList CycleSolutionMediumPremium
- 8Happy NumberMediumPremium
- 9Solution: Happy NumberSolutionMediumPremium
- 10Rearrange a LinkedListHardPremium
- 11Solution: Rearrange a LinkedListSolutionHardPremium
- 12Cycle in a Circular ArrayHardPremium
- 13Solution: Cycle in a Circular ArraySolutionHardPremium
- 1Introduction to Queues PatternConceptEasyPremium
- 2Number of Recent CallsEasyPremium
- 3Solution: Number of Recent CallsSolutionEasyPremium
- 4Design Circular QueueMediumPremium
- 5Solution: Design Circular QueueSolutionMediumPremium
- 6Sliding Window MaximumHardPremium
- 7Solution: Sliding Window MaximumSolutionHardPremium
- 1Introduction to Sliding Window PatternConceptEasyPremium
- 2Maximum Sum Subarray of Size KEasy
- 3Solution: Maximum Sum Subarray of Size KSolutionEasy
- 4Permutation in a StringMediumPremium
- 5Solution: Permutation in a StringSolutionMediumPremium
- 6Longest Substring with K Distinct CharactersMediumPremium
- 7Solution: Longest Substring with K Distinct CharactersSolutionMediumPremium
- 8Longest Substring with Same Letters after ReplacementHardPremium
- 9Solution: Longest Substring with Same Letters after ReplacementSolutionHardPremium
- 1Introduction to Merge Intervals PatternConceptEasyPremium
- 2Merge IntervalsMedium
- 3Solution: Merge IntervalsSolutionMedium
- 4Intervals IntersectionMediumPremium
- 5Solution: Intervals IntersectionSolutionMediumPremium
- 6Conflicting AppointmentsMediumPremium
- 7Solution: Conflicting AppointmentsSolutionMediumPremium
- 8Minimum Meeting RoomsHardPremium
- 9Solution: Minimum Meeting RoomsSolutionHardPremium
- 1Introduction to Tree Breadth First Search PatternConceptEasyPremium
- 2Binary Tree Level Order TraversalEasy
- 3Solution: Binary Tree Level Order TraversalSolutionEasy
- 4Average of Levels in Binary TreeEasyPremium
- 5Solution: Average of Levels in Binary TreeSolutionEasyPremium
- 6Binary Tree Right Side ViewMediumPremium
- 7Solution: Binary Tree Right Side ViewSolutionMediumPremium
- 8Binary Tree Zigzag Level Order TraversalMediumPremium
- 9Solution: Binary Tree Zigzag Level Order TraversalSolutionMediumPremium
- 10Maximum Width of Binary TreeHardPremium
- 11Solution: Maximum Width of Binary TreeSolutionHardPremium
- 12Vertical Order Traversal of a Binary TreeHardPremium
- 13Solution: Vertical Order Traversal of a Binary TreeSolutionHardPremium
- 1Introduction to Heap PatternConceptEasyPremium
- 2Kth Largest Element in a StreamEasyPremium
- 3Solution: Kth Largest Element in a StreamSolutionEasyPremium
- 4Last Stone WeightEasyPremium
- 5Solution: Last Stone WeightSolutionEasyPremium
- 1Introduction to Graph PatternConceptEasyPremium
- 2Flood FillEasy
- 3Solution: Flood FillSolutionEasy
- 4Find if Path Exists in GraphEasyPremium
- 5Solution: Find if Path Exists in GraphSolutionEasyPremium
- 6Number of IslandsMediumPremium
- 7Solution: Number of IslandsSolutionMediumPremium
- 1Introduction to Tree Depth-First Search PatternConceptEasyPremium
- 2Path SumEasy
- 3Solution: Path SumSolutionEasy
- 4Diameter of Binary TreeEasyPremium
- 5Solution: Diameter of Binary TreeSolutionEasyPremium
- 6Path Sum IIMediumPremium
- 7Solution: Path Sum IISolutionMediumPremium
- 8Binary Tree Maximum Path SumHardPremium
- 9Solution: Binary Tree Maximum Path SumSolutionHardPremium
All 40 lessons. Five languages.
Plus the Low Level Design course.
Includes Coding Interview Patterns and Low Level Design.