Grokking the Coding Interview: Patterns for Coding Questions
Master coding interview patterns with Grokking the Coding Interview: Patterns for Coding Questions. Learn 24 essential patterns across multiple languages to ace your interviews!
Course Overview
Coding interviews are getting harder every day. A few years back, brushing up on key data structures and going through 50-75 coding interview questions was more than enough prep for an interview. Today, everyone has access to massive sets of coding problems, and they have gotten more difficult to account for that. The process has gotten more competitive.
When our team sat together to brainstorm on ideas to make the interview process easier for candidates, we realized quickly that one skill helped us the most when we were preparing for coding interviews: “the ability to map a new problem to an already known problem.”
To help candidates with that, we have come up with a list of 27 common coding patterns to help solve coding questions. The idea is, once you are familiar with a pattern, you’ll be able to solve dozens of problems with it.
The techniques taught in this course have helped developers land jobs in top companies including Google, Facebook, Amazon, and Microsoft.
Course Contents
- Introduction
- Who Should Take This Course?
- Course Overview
- Warmup
- Why warmup?
- Contains Duplicate (easy)
- Solution: Contains Duplicate
- Pangram (easy)
- Solution: Pangram
- Reverse Vowels (easy)
- Solution: Reverse Vowels
- Valid Palindrome (easy)
- Solution: Valid Palindrome
- Valid Anagram (easy)
- Solution: Valid Anagram
- Shortest Word Distance (easy)
- Solution: Shortest Word Distance
- Number of Good Pairs (easy)
- Solution: Number of Good Pairs
- Sqrt (medium)
- Solution: Sqrt
- Pattern: Two Pointers
- Introduction to Two Pointers Pattern
- Pair with Target Sum (easy)
- Solution: Pair with Target Sum
- Find Non-Duplicate Number Instances (easy)
- Solution: Find Non-Duplicate Number Instances
- Squaring a Sorted Array (easy)
- Solution: Squaring a Sorted Array
- Triplet Sum to Zero (medium)
- Solution: Triplet Sum to Zero
- Triplet Sum Close to Target (medium)
- Solution: Triplet Sum Close to Target
- Triplets with Smaller Sum (medium)
- Solution: Triplets with Smaller Sum
- Subarrays with Product Less than a Target (medium)
- Solution: Subarrays with Product Less than a Target
- Dutch National Flag Problem (medium)
- Solution: Dutch National Flag Problem
- Problem Challenge 1: Quadruple Sum to Target (medium)
- Solution: Problem Challenge 1: Quadruple Sum to Target
- Problem Challenge 2: Comparing Strings containing Backspaces (medium)
- Solution: Problem Challenge 2: Comparing Strings containing Backspaces
- Problem Challenge 3: Minimum Window Sort (medium)
- Solution: Problem Challenge 3: Minimum Window Sort
- Pattern: Fast & Slow Pointers
- Introduction to Fast & Slow Pointers Pattern
- LinkedList Cycle (easy)
- Solution: LinkedList Cycle
- Middle of the LinkedList (easy)
- Solution: Middle of the LinkedList
- Start of LinkedList Cycle (medium)
- Solution: Start of LinkedList Cycle
- Happy Number (medium)
- Solution: Happy Number
- Problem Challenge 1: Palindrome LinkedList (medium)
- Solution: Problem Challenge 1: Palindrome LinkedList
- Problem Challenge 2: Rearrange a LinkedList (medium)
- Solution: Problem Challenge 2: Rearrange a LinkedList
- Problem Challenge 3: Cycle in a Circular Array (hard)
- Solution: Problem Challenge 3: Cycle in a Circular Array
- Pattern: Sliding Window
- Introduction to Sliding Window Pattern
- Maximum Sum Subarray of Size K (easy)
- Solution: Maximum Sum Subarray of Size K
- Smallest Subarray With a Greater Sum (easy)
- Solution: Smallest Subarray With a Greater Sum
- Longest Substring with K Distinct Characters (medium)
- Solution: Longest Substring with K Distinct Characters
- Fruits into Baskets (medium)
- Solution: Fruits into Baskets
- Longest Substring with Same Letters after Replacement (hard)
- Solution: Longest Substring with Same Letters after Replacement
- Longest Subarray with Ones after Replacement (hard)
- Solution: Longest Subarray with Ones after Replacement
- Problem Challenge 1: Permutation in a String (hard)
- Solution: Problem Challenge 1: Permutation in a String
- Problem Challenge 2: String Anagrams (hard)
- Solution: Problem Challenge 2: String Anagrams
- Problem Challenge 3: Smallest Window containing Substring (hard)
- Solution: Problem Challenge 3: Smallest Window containing Substring
- Problem Challenge 4: Words Concatenation (hard)
- Solution: Problem Challenge 4: Words Concatenation
- Pattern: Merge Intervals
- Introduction to Merge Intervals Pattern
- Merge Intervals (medium)
- Solution: Merge Intervals
- Insert Interval (medium)
- Solution: Insert Interval
- Intervals Intersection (medium)
- Solution: Intervals Intersection
- Conflicting Appointments (medium)
- Solution: Conflicting Appointments
- Problem Challenge 1: Minimum Meeting Rooms (hard)
- Solution: Problem Challenge 1: Minimum Meeting Rooms
- Problem Challenge 2: Maximum CPU Load (hard)
- Solution: Problem Challenge 2: Maximum CPU Load
- Problem Challenge 3: Employee Free Time (hard)
- Solution: Problem Challenge 3: Employee Free Time
- Pattern: Cyclic Sort
- Introduction to Cyclic Sort Pattern
- Cyclic Sort (easy)
- Solution: Cyclic Sort
- Find the Missing Number (easy)
- Solution: Find the Missing Number
- Find all Missing Numbers (easy)
- Solution: Find all Missing Numbers
- Find the Duplicate Number (easy)
- Solution: Find the Duplicate Number
- Find all Duplicate Numbers (easy)
- Solution: Find all Duplicate Numbers
- Problem Challenge 1: Find the Corrupt Pair (easy)
- Solution: Problem Challenge 1: Find the Corrupt Pair
- Problem Challenge 2: Find the Smallest Missing Positive Number (medium)
- Solution: Problem Challenge 2: Find the Smallest Missing Positive Number
- Problem Challenge 3: Find the First K Missing Positive Numbers (hard)
- Solution: Problem Challenge 3: Find the First K Missing Positive Numbers
- Pattern: In-place Reversal of a Linked List
- Introduction to In-place Reversal of a Linked List Pattern
- Reverse a LinkedList (easy)
- Solution: Reverse a LinkedList
- Reverse a Sub-list (medium)
- Solution: Reverse a Sub-list
- Reverse every K-element Sub-list (medium)
- Solution: Reverse every K-element Sub-list
- Problem Challenge 1: Reverse alternating K-element Sub-list (medium)
- Solution: Problem Challenge 1: Reverse alternating K-element Sub-list
- Problem Challenge 2: Rotate a LinkedList (medium)
- Solution: Problem Challenge 2: Rotate a LinkedList
- Pattern: Stacks
- Introduction to Stack
- Operations on Stack
- Implementing Stack Data Structure
- Applications of Stack
- Problem 1: Balanced Parentheses
- Solution: Balanced Parentheses
- Problem 2: Reverse a String
- Solution: Reverse a String
- Problem 3: Decimal to Binary Conversion
- Solution: Decimal to Binary Conversion
- Problem 4: Next Greater Element
- Solution: Next Greater Element
- Problem 5: Sorting a Stack
- Solution: Sorting a Stack
- Problem 6: Simplify Path
- Solution: Simplify Path
- Pattern: Monotonic Stack
- Introduction to Monotonic Stack
- Remove Nodes From Linked List (medium)
- Solution: Remove Nodes From Linked List
- Remove All Adjacent Duplicates In String (easy)
- Solution: Remove All Adjacent Duplicates In String
- Next Greater Element (easy)
- Solution: Next Greater Element
- Daily Temperatures (easy)
- Solution: Daily Temperatures
- Remove All Adjacent Duplicates in String II (medium)
- Solution: Remove All Adjacent Duplicates in String II
- Remove K Digits (hard)
- Solution: Remove K Digits
- Pattern: Hash Maps
- Introduction to Hashing
- Introduction to Hash Tables
- Issues with Hash Tables
- Problem 1: First Non-repeating Character (easy)
- Solution: First Non-repeating Character (easy)
- Problem 2: Largest Unique Number (easy)
- Solution: Largest Unique Number (easy)
- Problem 3: Maximum Number of Balloons (easy)
- Solution: Maximum Number of Balloons (easy)
- Problem 4: Longest Palindrome(easy)
- Solution: Longest Palindrome(easy)
- Problem 5: Ransom Note (easy)
- Solution: Ransom Note (easy)
- Pattern: Tree Breadth First Search
- Introduction to Tree Breadth First Search Pattern
- Binary Tree Level Order Traversal (easy)
- Solution: Binary Tree Level Order Traversal
- Reverse Level Order Traversal (easy)
- Solution: Reverse Level Order Traversal
- Zigzag Traversal (medium)
- Solution: Zigzag Traversal
- Level Averages in a Binary Tree (easy)
- Solution: Level Averages in a Binary Tree
- Minimum Depth of a Binary Tree (easy)
- Solution: Minimum Depth of a Binary Tree
- Level Order Successor (easy)
- Solution: Level Order Successor
- Connect Level Order Siblings (medium)
- Solution: Connect Level Order Siblings
- Problem Challenge 1: Connect All Level Order Siblings (medium)
- Solution: Problem Challenge 1: Connect All Level Order Siblings
- Problem Challenge 2: Right View of a Binary Tree (easy)
- Solution: Problem Challenge 2: Right View of a Binary Tree
- Pattern: Tree Depth First Search
- Introduction to Tree Depth First Search Pattern
- Binary Tree Path Sum (easy)
- Solution: Binary Tree Path Sum
- All Paths for a Sum (medium)
- Solution: All Paths for a Sum
- Sum of Path Numbers (medium)
- Solution: Sum of Path Numbers
- Path With Given Sequence (medium)
- Solution: Path With Given Sequence
- Count Paths for a Sum (medium)
- Solution: Count Paths for a Sum
- Problem Challenge 1: Tree Diameter (medium)
- Solution: Problem Challenge 1: Tree Diameter
- Problem Challenge 2: Path with Maximum Sum (hard)
- Solution: Problem Challenge 2: Path with Maximum Sum
- Pattern: Graphs
- Introduction to Graph
- Graph Representations
- Graph as an Abstract Data Type (ADT)
- Graph Traversal – Depth First Search(DFS)
- Graph Traversal – Breadth First Search (BFS)
- Problem 1: Find if Path Exists in Graph(easy)
- Solution: Find if Path Exists in Graph(easy)
- Problem 2: Number of Provinces (medium)
- Solution: Number of Provinces
- Problem 3: Minimum Number of Vertices to Reach All Nodes(medium)
- Solution: Minimum Number of Vertices to Reach All Nodes(medium)
- Pattern: Island (Matrix Traversal)
- Introduction to Island Pattern
- Number of Islands (easy)
- Solution: Number of Islands
- Biggest Island (easy)
- Solution: Biggest Island
- Flood Fill (easy)
- Solution: Flood Fill
- Number of Closed Islands (easy)
- Solution: Number of Closed Islands
- Problem Challenge 1 (easy)
- Solution: Problem Challenge 1
- Problem Challenge 2 (medium)
- Solution: Problem Challenge 2
- Problem Challenge 3 (medium)
- Solution: Problem Challenge 3
- Pattern: Two Heaps
- Introduction to Two Heaps Pattern
- Find the Median of a Number Stream (medium)
- Solution: Find the Median of a Number Stream
- Sliding Window Median (hard)
- Solution: Sliding Window Median
- Maximize Capital (hard)
- Solution: Maximize Capital
- Problem Challenge 1: Next Interval (hard)
- Solution: Problem Challenge 1: Next Interval
- Pattern: Subsets
- Introduction to Subsets Pattern
- Subsets (easy)
- Solution: Subsets
- Subsets With Duplicates (easy)
- Solution: Subsets With Duplicates
- Permutations (medium)
- Solution: Permutations
- String Permutations by changing case (medium)
- Solution: String Permutations by changing case
- Balanced Parentheses (hard)
- Solution: Balanced Parentheses
- Unique Generalized Abbreviations (hard)
- Solution: Unique Generalized Abbreviations
- Problem Challenge 1: Evaluate Expression (hard)
- Solution: Problem Challenge 1: Evaluate Expression
- Problem Challenge 2: Structurally Unique Binary Search Trees (hard)
- Solution: Problem Challenge 2: Structurally Unique Binary Search Trees
- Problem Challenge 3: Count of Structurally Unique Binary Search Trees (hard)
- Solution: Problem Challenge 3: Count of Structurally Unique Binary Search Trees
- Pattern: Modified Binary Search
- Introduction to Modified Binary Search Pattern
- Order-agnostic Binary Search (easy)
- Solution: Order-agnostic Binary Search
- Ceiling of a Number (medium)
- Solution: Ceiling of a Number
- Next Letter (medium)
- Solution: Next Letter
- Number Range (medium)
- Solution: Number Range
- Search in a Sorted Infinite Array (medium)
- Solution: Search in a Sorted Infinite Array
- Minimum Difference Element (medium)
- Solution: Minimum Difference Element
- Bitonic Array Maximum (easy)
- Solution: Bitonic Array Maximum
- Problem Challenge 1: Search Bitonic Array (medium)
- Solution: Problem Challenge 1: Search Bitonic Array
- Problem Challenge 2: Search in Rotated Array (medium)
- Solution: Problem Challenge 2: Search in Rotated Array
- Problem Challenge 3: Rotation Count (medium)
- Solution: Problem Challenge 3: Rotation Count
- Pattern: Bitwise XOR
- Introduction to Bitwise XOR Pattern
- Single Number (easy)
- Solution: Single Number
- Two Single Numbers (medium)
- Solution: Two Single Numbers
- Complement of Base 10 Number (medium)
- Solution: Complement of Base 10 Number
- Problem Challenge 1: Flip and Invert an Image (hard)
- Solution: Problem Challenge 1: Flip and Invert an Image
- Pattern: Top ‘K’ Elements
- Introduction to Top ‘K’ Elements Pattern
- Top ‘K’ Numbers (easy)
- Solution: Top ‘K’ Numbers
- Kth Smallest Number (easy)
- Solution: Kth Smallest Number
- ‘K’ Closest Points to the Origin (easy)
- Solution: ‘K’ Closest Points to the Origin
- Connect Ropes (easy)
- Solution: Connect Ropes
- Top ‘K’ Frequent Numbers (medium)
- Solution: Top ‘K’ Frequent Numbers
- Frequency Sort (medium)
- Solution: Frequency Sort
- Kth Largest Number in a Stream (medium)
- Solution: Kth Largest Number in a Stream
- ‘K’ Closest Numbers (medium)
- Solution: ‘K’ Closest Numbers
- Maximum Distinct Elements (medium)
- Solution: Maximum Distinct Elements
- Sum of Elements (medium)
- Solution: Sum of Elements
- Rearrange String (hard)
- Solution: Rearrange String
- Problem Challenge 1: Rearrange String K Distance Apart (hard)
- Solution: Problem Challenge 1: Rearrange String K Distance Apart
- Problem Challenge 2: Scheduling Tasks (hard)
- Solution: Problem Challenge 2: Scheduling Tasks
- Problem Challenge 3: Frequency Stack (hard)
- Solution: Problem Challenge 3: Frequency Stack
- Pattern: K-way Merge
- Introduction to K-way Merge Pattern
- Merge K Sorted Lists (medium)
- Solution: Merge K Sorted Lists
- Kth Smallest Number in M Sorted Lists (medium)
- Solution: Kth Smallest Number in M Sorted Lists
- Kth Smallest Number in a Sorted Matrix (hard)
- Solution: Kth Smallest Number in a Sorted Matrix
- Smallest Number Range (hard)
- Solution: Smallest Number Range
- Problem Challenge 1: K Pairs with Largest Sums (hard)
- Solution: Problem Challenge 1: K Pairs with Largest Sum
- Pattern: Greedy Algorithms
- Introduction to Greedy Algorithm
- Valid Palindrome II (easy)
- Solution: Valid Palindrome II
- Maximum Length of Pair Chain (medium)
- Solution: Maximum Length of Pair Chain
- Minimum Add to Make Parentheses Valid (medium)
- Solution: Minimum Add to Make Parentheses Valid
- Remove Duplicate Letters (medium)
- Solution: Remove Duplicate Letters
- Largest Palindromic Number (medium)
- Solution: Largest Palindromic Number
- Removing Minimum and Maximum From Array (medium)
- Solution: Removing Minimum and Maximum From Array
- Pattern: 0/1 Knapsack (Dynamic Programming)
- What is Dynamic Programming?
- Introduction to 0/1 Knapsack Pattern
- 0/1 Knapsack (medium)
- Solution: 0/1 Knapsack
- Equal Subset Sum Partition (medium)
- Solution: Equal Subset Sum Partition
- Subset Sum (medium)
- Solution: Subset Sum
- Minimum Subset Sum Difference (hard)
- Solution: Minimum Subset Sum Difference
- Problem Challenge 1: Count of Subset Sum (hard)
- Solution: Problem Challenge 1: Count of Subset Sum
- Problem Challenge 2: Target Sum (hard)
- Solution: Problem Challenge 2: Target Sum
- Pattern: Backtracking
- Introduction to Backtracking Pattern
- Combination Sum (medium)
- Solution: Combination Sum
- Word Search (medium)
- Solution: Word Search
- Factor Combinations (medium)
- Solution: Factor Combinations
- Split a String Into the Max Number of Unique Substrings (medium)
- Solution: Split a String Into the Max Number of Unique Substrings
- Sudoku Solver (hard)
- Solution: Sudoku Solver
- Pattern: Trie
- Introduction to Trie
- Implement Trie (Prefix Tree) (medium)
- Solution: Implement Trie (Prefix Tree)
- Index Pairs of a String (easy)
- Solution: Index Pairs of a String
- Design Add and Search Words Data Structure (medium)
- Solution: Design Add and Search Words Data Structure
- Extra Characters in a String (medium)
- Solution: Extra Characters in a String
- Search Suggestions System (medium)
- Solution: Search Suggestions System
- Pattern: Topological Sort (Graph)
- Introduction to Topological Sort
- Topological Sort (medium)
- Solution: Topological Sort
- Tasks Scheduling (medium)
- Solution: Tasks Scheduling
- Tasks Scheduling Order (medium)
- Solution: Tasks Scheduling Order
- All Tasks Scheduling Orders (hard)
- Solution: All Tasks Scheduling Orders
- Alien Dictionary (hard)
- Solution: Alien Dictionary
- Problem Challenge 1: Reconstructing a Sequence (hard)
- Solution: Problem Challenge 1: Reconstructing a Sequence
- Problem Challenge 2: Minimum Height Trees (hard)
- Solution: Problem Challenge 2: Minimum Height Trees
- Pattern: Union Find
- Introduction to Union Find Pattern
- Redundant Connection (medium)
- Solution: Redundant Connection
- Number of Provinces (medium)
- Solution: Number of Provinces
- Is Graph Bipartite? (medium)
- Solution: Is Graph Bipartite?
- Path With Minimum Effort (medium)
- Solution: Path With Minimum Effort
- Pattern: Ordered Set
- Introduction to Ordered Set Pattern
- Merge Similar Items (easy)
- Solution: Merge Similar Items
- 132 Pattern (medium)
- Solution: 132 Pattern
- My Calendar I (medium)
- Solution: My Calendar I
- Longest Continuous Subarray (medium)
- Solution: Longest Continuous Subarray
- Pattern: Prefix Sum
- Introduction Prefix Sum Pattern
- Find the Middle Index in Array (easy)
- Solution: Find the Middle Index in Array
- Left and Right Sum Differences (easy)
- Solution: Left and Right Sum Differences (easy)
- Maximum Size Subarray Sum Equals k (medium)
- Solution: Maximum Size Subarray Sum Equals k
- Binary Subarrays With Sum (medium)
- Solution: Binary Subarrays With Sum
- Subarray Sums Divisible by K (medium)
- Solution: Subarray Sums Divisible by K
- Sum of Absolute Differences in a Sorted Array (medium)
- Solution: Sum of Absolute Differences in a Sorted Array
- Subarray Sum Equals K (medium)
- Solution: Subarray Sum Equals K
- Pattern: Multi-threaded
- Introduction to Multi-threaded Pattern
- Same Tree (medium)
- Solution: Same Tree
- Invert Binary Tree (medium)
- Solution: Invert Binary Tree
- Binary Search Tree Iterator (medium)
- Solution: Binary Search Tree Iterator
- Miscellaneous
- Kth Smallest Number (hard)
- Solution: Kth Smallest Number
- Revision
- Coding Patterns: A Cheat Sheet
- Test Your Knowledge (Easy)
- Introduction
- Two Sum (easy)
- Solution: Two Sum
- Valid Perfect Square (easy)
- Solution: Valid Perfect Square
- Best Time to Buy and Sell (easy)
- Solution: Best Time to Buy and Sell Stock
- Valid Parentheses (Easy)
- Solution: Valid Parentheses
- Subtree of Another Tree (easy)
- Solution: Subtree of Another Tree
- Design Parking System (easy)
- Solution: Design Parking System
- Test Your Knowledge (Medium)
- Daily Temperatures (medium)
- Solution: Daily Temperatures
- Group Anagrams (medium)
- Solution: Group Anagrams
- Decode String (medium)
- Solution: Decode String
- Valid Sudoku (medium)
- Solution: Valid Sudoku
- Product of Array Except Self (medium)
- Solution: Product of Array Except Self
- Maximum Product Subarray (medium)
- Solution: Maximum Product Subarray
- Container With Most Water (medium)
- Solution: Container With Most Water
- Palindromic Substrings (medium)
- Solution: Palindromic Substrings
- Remove Nth Node From End of List (medium)
- Solution: Remove Nth Node From End of List
- Find Minimum in Rotated Sorted Array (medium)
- Solution: Find Minimum in Rotated Sorted Array
- Pacific Atlantic Water Flow (medium)
- Solution: Pacific Atlantic Water Flow
- Validate Binary Search Tree (medium)
- Solution: Validate Binary Search Tree
- Construct Binary Tree from Preorder and Inorder Traversal (medium)
- Solution: Construct Binary Tree from Preorder and Inorder Traversal
- Clone Graph (medium)
- Solution: Clone Graph
- House Robber II (medium)
- Solution: House Robber II
- Decode Ways (medium)
- Solution: Decode Ways
- Unique Paths (medium)
- Solution: Unique Paths
- Word Break (medium)
- Solution: Word Break
- Lowest Common Ancestor of a Binary Search Tree (medium)
- Solution: Lowest Common Ancestor of a Binary Search Tree
- Longest Consecutive Sequence (medium)
- Solution: Longest Consecutive Sequence
- Meeting Rooms II (medium)
- Solution: Meeting Rooms II
- Encode and Decode Strings
- Solution: Encode and Decode Strings
- Number of Connected Components in an Undirected Graph
- Solution: Number of Connected Components in an Undirected Graph
- Graph Valid Tree (medium)
- Solution: Graph Valid Tree
- Implement Trie (Prefix Tree) (medium)
- Solution: Implement Trie (Prefix Tree)
- Design Add and Search Words Data Structure (medium)
- Solution: Design Add and Search Words Data Structure
- Test Your Knowledge (Hard)
- Longest Valid Parentheses (hard)
- Solution: Longest Valid Parentheses
- Serialize and Deserialize Binary Tree (hard)
- Solution: Serialize and Deserialize Binary Tree
1 review for Grokking the Coding Interview: Patterns for Coding Questions
Add a review
Original price was: ₹11,468.00.₹4,404.00Current price is: ₹4,404.00.
Andrew –
A course designed to truly help you ‘grok’ the subject, not just memorize it