Fundamentals of Programming
• Understanding Time and Space Complexity (Big-O Notation, Amortized Analysis)
• Recursion and Backtracking Basics
• Bit Manipulation (XOR Tricks, Checking Power of 2, Counting Set Bits)
• Basic Math (GCD, LCM, Prime Numbers, Modulo, Fast Exponentiation, Sieve of Eratosthenes)
• Modular Arithmetic, Matrix Exponentiation, Fermat’s Theorem
• Fast Fourier Transform (FFT) for Polynomials
Basic Data Structures
• Arrays & Strings
o Two Pointers, Sliding Window, Prefix Sum, Difference Array
o Kadane’s Algorithm (Maximum Subarray Sum), Binary Search on Arrays
o Dutch National Flag Problem, Next Permutation, Merge Intervals
o String Matching Algorithms (KMP, Rabin-Karp, Z-Algorithm, Aho-Corasick Algorithm)
o Longest Repeating Substring, Boyer-Moore Algorithm
• Hashing & Hash Maps
o Frequency Count, Anagram Problems
o Two Sum Problem, Subarray with Given Sum
o Rolling Hash, Bloom Filters, Consistent Hashing
• Stacks and Queues
o Monotonic Stack/Queue, Next Greater Element
o LRU Cache Implementation
o Min Stack, Sliding Window Maximum
o Implementing Stack using Queues and Vice Versa
o Circular Queue, Deques, Double-Ended Queues
• Linked Lists
o Fast and Slow Pointers (Cycle Detection, Middle of List)
o Merge Two Sorted Lists, Reverse Linked List, Intersection of Two Lists
o Sort Linked List, Flattening a Linked List
o Clone a Linked List with Random Pointers
o XOR Linked List, Skip Lists
Recursion & Backtracking
• Subset Generation, Combination Sum, N-Queens Problem
• Sudoku Solver, Word Search, Letter Combinations of a Phone Number
• Permutations and Combinations Problems
• Rat in a Maze, M-Coloring Problem, Hamiltonian Path
• Knight’s Tour Problem, Tug of War Problem
Sorting & Searching
• Sorting Algorithms: Quick Sort, Merge Sort, Heap Sort, Counting Sort, Radix Sort, Bucket Sort
• Binary Search Variations
o Search in Rotated Sorted Array, Find First and Last Position of an Element
o Median of Two Sorted Arrays, Square Root using Binary Search
• Ternary Search, Exponential Search
• Interpolation Search, Fibonacci Search
• Counting Inversions in an Array
Advanced Data Structures
• Trees (Binary Trees, Binary Search Trees)
o Depth First Search (Preorder, Inorder, Postorder), Breadth First Search (Level Order
Traversal)
o Lowest Common Ancestor, Diameter of Tree
o Serialize and Deserialize a Binary Tree
o Morris Traversal, Vertical Order Traversal, Zigzag Level Order Traversal
o AVL Tree, Red-Black Tree (Basic Understanding), Treaps
o Threaded Binary Trees, Splay Trees, B-Trees
• Heaps & Priority Queue
o Kth Largest Element, Heap Sort, Top-K Problems
o Merge K Sorted Lists, Median in a Stream
o Fibonacci Heap, Binomial Heap
• Graphs
o BFS, DFS, Topological Sorting
o Dijkstra’s Algorithm, Bellman-Ford, Floyd Warshall
o MST (Kruskal’s, Prim’s), Bridges and Articulation Points
o Strongly Connected Components (Kosaraju, Tarjan’s Algorithm)
o Graph Coloring, Bipartite Graph
o Eulerian Path and Circuit, Hamiltonian Path
o Maximum Flow (Ford-Fulkerson, Edmonds-Karp, Dinic’s Algorithm)
o Traveling Salesman Problem (TSP), Chinese Postman Problem
• Tries & Suffix Arrays
o Word Search, Longest Prefix Matching, Implement Auto-Suggestions
o Suffix Array and Suffix Tree Basics, Suffix Automaton
o Burrows-Wheeler Transform (BWT), Patricia Tree
Dynamic Programming
• 1D DP
o Fibonacci, Climbing Stairs, House Robber, Coin Change, Jump Game
o Partition Problems, Catalan Numbers
• 2D DP
o Knapsack (0/1 Knapsack, Unbounded Knapsack)
o Grid Paths, Wildcard Matching, Edit Distance
o Boolean Parenthesization, Optimal BST
• Subsequence-Based DP
o Longest Increasing Subsequence, Longest Common Subsequence
o Longest Palindromic Subsequence, Minimum Insertions to Make a String Palindrome
o Subset Sum Problem, Count of Palindromic Substrings
• DP with Bitmasking
• Matrix Chain Multiplication, Egg Dropping Problem
• Digit DP, DP on Trees, DP on Graphs
Advanced Topics
• Segment Trees & Fenwick Trees (Binary Indexed Tree)
• Disjoint Set Union (DSU) & Union-Find Algorithm (Path Compression, Union by Rank)
• Bitwise Tricks & Optimizations
• Sparse Tables, Heavy-Light Decomposition, Centroid Decomposition
• Mo’s Algorithm, Persistent Data Structures
System Design Basics (for Interviews)
• Caching Mechanisms
o LRU, LFU, TTL Cache
• Distributed Systems
o CAP Theorem, Load Balancing, Sharding
o Database Indexing, Horizontal vs Vertical Scaling
• Concurrency & Parallelism
o Multithreading Basics
o Deadlocks & Race Conditions
o Thread Synchronization
• Bloom Filters, Hyper Log , Skip Lists in System Design
• Distributed Systems Basics, Microservices, Message Queues
Problem-Solving Strategy
• Solve 500+ LeetCode Problems (150 Easy, 250 Medium, 100 Hard)
• Participate in Weekly Coding Contests (Codeforces, AtCoder, LeetCode)
• Revise Concepts via Mock Interviews & System Design Discussions
• Practice Timed Problem Solving and Code Optimization
• Maintain Notes for Frequently Used Techniques and Templates
Mock Interviews & Revision
• Solve Previous FAANG/Top Tech Company Interview Questions
• Focus on Time Optimization and Edge Cases
• Practice Behavioral Interview Questions (STAR Method)
• Engage in Pair Programming and Code Reviews
• Participate in Mock Interviews on Pramp, InterviewBit, or with Peers
Resources:
• Books: CLRS, Cracking the Coding Interview, Elements of Programming Interviews, Algorithm
Design by Kleinberg & Tardos
• Platforms: LeetCode, CodeForces, CodeChef, AtCoder, HackerRank, SPOJ, TopCoder
• Courses: MIT OpenCourseWare, Stanford Algorithms Course, Udemy/Pluralsight Competitive
Programming Courses
Goal: Master DSA to confidently solve LeetCode hard problems and crack top-tier coding interviews!