Level 1: Linear data structures
Linked Lists
Singly Linked List
Insertion at the front
Insertion at the end
Insertion at k-th position
Deletion in a linked list
Circular Linked list
Doubly Linked list
Stacks and Queues
Stack introduction
Push, Pop, Peek, isEmpty, isFull functions
Implementing a Stack
Stacks using inbuilt libraries
Valid parenthesis problem
Dealing with Reverse Polish Notation
Finding Next Greater Element
Largest Rectangle in a Histogram
Queue introduction - Enqueue / Dequeue
Queue Implementation
To do list using a Queue
Level 2: Basic Algorithms
Time Complexity
Fundamentals of Time Complexity
Apply time complexity to DSA problems
Log and Square root time complexity
Practice problems
Searching and Sorting Algorithms
Introduction to linear Search
Practice Linear Search
Introduction to Sorting
Bubble Sort
Selection Sort
Insertion Sort
Merge Sort
Quick Sort
Counting Sort
Radix Sort
Greedy Algorithms
Introduction to Greedy Algorithms
Basics of Greedy and Proofs
Chopsticks Problem
Evacuate to Moon Problem
Snakes and Moongose Problem
Maximum Score Problem
Maximize Disjoint Pair Sum
Two pointers Approach & Problems
Two Pointers Technique
Sliding Window Technique
Remove duplicates from a sorted array
Find if absolute difference of two elements equals B
Find common elements in two arrays
Minimum Similar Substring
Palindrome by Splitting
More practice problems
Prefix Sum Problems
Creating Prefix Array
Optimization using Prefix Sum
Suffix Arrays
Good Subarrays problem
Counting Pretty Numbers problem
Mystical Numbers Problem
Rectangular Queries problem
More practice problems
Binary Search
What is Binary Search?
Visualization of Binary Search
Time Complexity Analysis of Binary Search
Using Inbuilt libraries
Solve Average Flex
Solve The Wave
Implicit Binary Search
Binary Search Templates
Solve Coins and Triangle
Recursion
Introduction to Recursion
Base Condition
Solve Sum of N Numbers using Recursion
Factorial using Recursion
Fibonacci series
Linear search and patterns using Recursion
Palindrome using Recursion
All Possible Subsets
Backtracking - Unique Combinations Sum
Backtracking - Find Unique Permutations
Level 3: Non-Linear data structures
2D Arrays / Matrices
Representing a Matrix
Matrix traversal
Matrix multiplication
Matrix rotations
Finding path with minimum sum
Search in Matrix
Median in Matrix
Trees and Binary trees
Introduction to Trees
Nodes, Edges, Root, Leaves
Tree property
Degree of a Node
Depth and Height of a Tree
Adjacency matrix representation
Adjacency list representation
Depth First Search
Breadth First Search
Binary Trees
Types of Binary Trees
PreOrder, PostOrder and InOrder traversal
Height of a Binary Tree
Binary Search Tree
Search in Binary Search Tree
Graphs
Introduction to Graphs
Undirected and Directed Graphs
Representation as Adjacency Matrix
Representation as Adjacency List
Graph Traversal
Depth First Search
Breadth First Search
Connected Components
Cycles in Graphs
Directed Acyclic Graph
Topological Sorting
Heaps
Introduction to Heaps
Max Heap and Min Heap
Representation as an Array
Insertion in Heap
Deletion of root
Time complexity of operations
Heap Sort
Find K-th largest number
Level 4 : Advanced Algorithms
Bit Manipulation
Binary Number System
Converting Decimal to Binary
Bitwise Operators
AND Operator
OR Operator
XOR Operator
Solve Dull Operation
Not Operator
Signed and Unsigned Data Types
Left and Right Shift
Practice Problems
Dynamic Programming
Introduction to Dynamic Programming
Maximum Subset Sum
Maximum Sum of a Valid Subset
Comparing with Greedy and Brute Force
Finding Subproblems
Solving Subproblems
Partitioning Problem
Maximum Sum Subarray
Longest Increasing Subsequence
Sums in a Triangle
Maximum sum path in a 2D Grid
Number theory
Prime Factorization
Prime Factorization in Sqrt(n)
Counting Divisors - I
GCD and LCM
Euclid Algorithm for GCD
Modular Arithmetic
Fast Exponentiation
Modular Multiplicative Inverse
Fermat Binomials
Sieve of Eratosthenes
Primality Test
Prime Factorization Method using Sieve O (log n)
Combinatorics
Introduction to Combinatorics
Conceptual Problems
Level 5 : Advanced data structures
Disjoint Set Union
Introduction to Disjoint Set Union
Parent Find and Union operations
Naive DSU implementation
Path Compression Optimization
Optimal Union
Practice Problems
Tries
Structure of a Trie
Insertion in Trie
Searching for a string in Trie
Deleting a string in Trie
Applications - Spell Check, Autocomplete