This document tracks the progress of my learning in Data Structures and Algorithms. Below is a checklist of topics I plan to cover, and I will update this as I complete each one.
- Basic Operations (Insertion, Deletion)
- Searching (Linear Search, Binary Search)
- Sorting Algorithms (Bubble Sort, Merge Sort, Quick Sort, Heap Sort)
- Two-pointer technique
- Sliding window technique
- Arrays in Space Complexity Optimization
- String Matching Algorithms (KMP, Rabin-Karp, Boyer-Moore)
- Anagram Checking
- String Compression
- Palindromes and Substrings
- Subarray and Subsequence Problems
- Singly Linked List
- Doubly Linked List
- Circular Linked List
- Operations (Insertion, Deletion, Traversal)
- Reversing Linked List
- Detecting and Removing Loops
- Merge Sort for Linked Lists
- Intersection of Two Linked Lists
- Flattening a Linked List
- Stack Operations (Push, Pop, Peek)
- Queue Operations (Enqueue, Dequeue, Front, Rear)
- Implementing Stacks and Queues using Arrays and Linked Lists
- Applications (Balanced Parentheses, Infix to Postfix, Postfix to Infix)
- Design a Stack with Min Operation
- Circular Queue
- Sliding Window Maximum using Deque
- Binary Trees (Traversal, Depth First Search, Breadth First Search)
- Binary Search Trees (Insertion, Deletion, Searching)
- AVL Trees (Balancing, Rotations)
- Red-Black Trees
- Segment Trees
- Fenwick Tree (Binary Indexed Tree)
- N-ary Trees
- Trie (Prefix Tree)
- Tree Isomorphism and Diameter
- Lowest Common Ancestor (LCA)
- Binary Tree Problems (Symmetry, Path Sum, Balanced Tree)
- Representation (Adjacency Matrix, Adjacency List, Edge List)
- Graph Traversal (BFS, DFS)
- Shortest Path Algorithms (Dijkstra’s, Bellman-Ford, Floyd-Warshall)
- Minimum Spanning Tree (Prim’s, Kruskal’s)
- Topological Sorting
- Strongly Connected Components (Kosaraju’s, Tarjan’s Algorithm)
- Graph Cycle Detection
- Bipartite Graph Check
- Eulerian and Hamiltonian Paths
- Network Flow (Ford-Fulkerson, Edmonds-Karp)
- Min Heap & Max Heap
- Heap Sort
- Priority Queue Operations
- Applications (K’th Largest/Smallest Element, Merge K Sorted Lists)
- D-ary Heap
- Hash Tables
- Collision Handling Techniques (Chaining, Open Addressing)
- Hash Map, Hash Set
- Hashing for Counting and Grouping
- Anagram Grouping
- Fibonacci Sequence (Memoization, Tabulation)
- 0/1 Knapsack Problem
- Longest Common Subsequence (LCS)
- Longest Increasing Subsequence (LIS)
- Coin Change Problem
- Matrix Chain Multiplication
- Partition Problem
- Subset Sum Problem
- Dynamic Programming on Trees and Graphs
- Dynamic Programming with Bitmasking
- String Edit Distance (Levenshtein Distance)
- Solving N-Queens Problem
- Subset and Permutation Generation
- Sudoku Solver
- Combination Sum
- Graph Coloring
- Hamiltonian Path
- Merge Sort
- Quick Sort
- Binary Search
- Closest Pair of Points
- Matrix Exponentiation
- Count Inversions
- Fractional Knapsack Problem
- Job Scheduling
- Activity Selection Problem
- Huffman Coding
- Kruskal’s and Prim’s Algorithms
- Segment Tree (Lazy Propagation)
- Trie (for efficient prefix search)
- Suffix Tree and Suffix Array
- Disjoint Set Union (Union-Find)
- AVL Trees, Red-Black Trees, and B-trees
- Skip Lists
- Bloom Filter
- XOR-based Problems
- Setting and Clearing Bits
- Counting Set Bits
- Fast Exponentiation
- Binary Representation Tricks
- Prime Number Algorithms (Sieve of Eratosthenes, Trial Division)
- Modular Arithmetic
- GCD and LCM
- Euclidean Algorithm
- Chinese Remainder Theorem
- Fast Powering (Exponentiation by Squaring)
- Combinatorics (Permutations, Combinations, Pigeonhole Principle)
- KMP Algorithm
- Rabin-Karp Algorithm
- Z Algorithm
- Aho-Corasick Algorithm
- Trie for Word Search
- Suffix Arrays and Suffix Trees
- Convex Hull (Graham Scan, Jarvis March)
- Line Intersection
- Sweep Line Algorithm
- Closest Pair of Points
- Matrix Multiplication Algorithms
- Digital Root and Properties of Numbers
- Game Theory (Nim Game, Grundy Numbers)
- Pattern Searching Algorithms
- Heavy-Light Decomposition
- Number of Ways to Arrange
- Leetcode (Top 100 Must-Have Questions)
- Codeforces (Problem Sets)
- HackerRank (Algorithms and Data Structures)
- GeeksforGeeks (DSA Practice)
- InterviewBit (Problem Solving)
- CodeChef (Long and Short Contests)