Overview
Syllabus
Generate All Palindromic Decompositions Of A String ("Palindrome Partitioning" on Leetcode)
Knuth–Morris–Pratt (KMP) Pattern Matching Substring Search - First Occurrence Of Substring
The Balanced Parentheses Problem - Classic Stack Problem ("Valid Parentheses" on Leetcode)
The Dutch National Flag Problem (The Quicksort "Band-Aid")
How To Permute A String - Generate All Permutations Of A String
Count Total Unique Binary Search Trees - The nth Catalan Number (Dynamic Programming)
Implement A Sudoku Solver - Sudoku Solving Backtracking Algorithm ("Sudoku Solver" on LeetCode)
The IP Address Decomposition Problem - Compute All Valid IP Addresses From Raw IP String
Edit Distance Between 2 Strings - The Levenshtein Distance ("Edit Distance" on LeetCode)
How To Reverse A Singly Linked List | The Ultimate Explanation (Iteratively & Recursively)
Total Occurrences Of K In A Sorted Array (Facebook Software Engineering Interview Question)
Implement An LRU Cache - The LRU Cache Eviction Policy ("LRU Cache" on LeetCode)
Search A Maze For Any Path - Depth First Search Fundamentals (Similar To "The Maze" on Leetcode)
Test If A Binary Tree Is Symmetric ("Symmetric Tree" on Leetcode)
Total Ways To Decode A String - Recursive Dynamic Programming Approach ("Decode Ways" on LeetCode)
Compute All Mnemonics For A Phone Number (Recursion/Backtracking Problem)
Find The Longest Increasing Subsequence - Dynamic Programming Fundamentals
The Change Making Problem - Fewest Coins To Make Change Dynamic Programming
Implement A Max Stack - A Stack With A .max() API (Similar To "Min Stack" on LeetCode)
Merge K Sorted Arrays - Min Heap Algorithm ("Merge K Sorted Lists" on LeetCode)
Partition To K Equal Sum Subsets From An Array of Integers - The Backtracking Approach
Compute The Next Permutation of A Numeric Sequence - Case Analysis ("Next Permutation" on Leetcode)
The N Queens Problem using Backtracking/Recursion - Explained
The 0/1 Knapsack Problem (Demystifying Dynamic Programming)
Maximum Sum Rectangle In A 2D Matrix - Kadane's Algorithm Applications (Dynamic Programming)
Fast Multiplication: From Grade-School Multiplication To Karatsuba's Algorithm
Asymptotic Notations 101: Big O, Big Omega, & Theta (Asymptotic Analysis Bootcamp)
Max Contiguous Subarray Sum - Cubic Time To Kadane's Algorithm ("Maximum Subarray" on LeetCode)
Longest Common Subsequence (2 Strings) - Dynamic Programming & Competing Subproblems
Search A 2D Sorted Matrix - Fundamentals of Search Space Reduction
Implement A Queue Using Stacks - The Queue ADT ("Implement Queue Using Stacks" on LeetCode)
The Backtracking Blueprint: The Legendary 3 Keys To Backtracking Algorithms
Minimum Window Substring: Utilizing Two Pointers & Tracking Character Mappings With A Hashtable
Implement A Binary Heap - An Efficient Implementation of The Priority Queue ADT (Abstract Data Type)
Binary Tree Level Order Traversal - Drawing The Parallel Between Trees & Graphs
Egg Dropping Problem: Dynamic Programming Fundamentals & Understanding Subproblem Decomposition
Investigating Heap Sort - Why Is Heap Sort Θ(n * log(n))? An Even Longer Really Long Answer.
All Nodes Distance K In A Binary Tree - Performing Bidirectional Search On A Tree Using A Hashtable
Reverse Polish Notation: Types of Mathematical Notations & Using A Stack To Solve RPN Expressions
Add Two Numbers Without The "+" Sign (Bit Shifting Basics)
Taught by
Back To Back SWE