Week 1: Fundamentals & Arrays
● Monday:
○ Concept: Introduction to DSA, Time & Space Complexity (Big O Notation),
Recursion Basics.
○ Problems: Simple array traversals, finding min/max, sum. (Easy)
● Tuesday:
○ Concept: Arrays - Basic operations, dynamic arrays.
○ Problems: Array manipulation (rotate, remove duplicates - sorted array),
finding missing number. (Easy/Medium)
● Wednesday:
○ Concept: Arrays - Two Pointers Technique.
○ Problems: Two sum, 3 sum, Valid Palindrome (string, but uses two pointers),
container with most water. (Medium)
● Thursday:
○ Concept: Arrays - Sliding Window Technique.
○ Problems: Max sum subarray of size K, longest substring with K distinct
characters. (Medium)
● Friday:
○ Concept: Arrays - Prefix Sum.
○ Problems: Range sum query, subarray sum equals K. (Medium)
○ Weekly Review: Revisit all concepts, try 2-3 mixed array problems from
different types.
Week 2: Strings & Hashing
● Monday:
○ Concept: Strings - Immutability, common string operations, character
manipulation.
○ Problems: Reverse a string, check for anagrams, check for palindromes.
(Easy)
● Tuesday:
○ Concept: Strings - String matching (Naive approach, introduction to KMP if
time permits).
○ Problems: Longest common prefix, Roman to Integer, Integer to Roman.
(Medium)
● Wednesday:
○ Concept: Hashing - Hash Maps and Hash Sets. Understanding put, get,
containsKey, collision resolution (conceptual).
○ Problems: Two sum (using hash map), count distinct elements, find first
non-repeating character. (Easy/Medium)
● Thursday:
○ Concept: Hashing - Frequency counting, mapping characters/numbers.
○ Problems: Group anagrams, longest consecutive sequence, subarray sum
equals K (again, but now with hashing). (Medium)
● Friday:
○ Concept: Hashing - Custom Hash Functions (briefly).
○ Problems: Unique Morse Code Words, finding duplicates within a window
(sliding window + hash set). (Medium)
○ Weekly Review: Focus on effective use of hashing in conjunction with
arrays/strings.
Week 3: Linked Lists & Stacks
● Monday:
○ Concept: Linked Lists - Singly Linked List: creation, traversal, insertion,
deletion.
○ Problems: Reverse a Linked List, delete node, middle of the Linked List.
(Easy/Medium)
● Tuesday:
○ Concept: Linked Lists - Doubly Linked List, Circular Linked List.
○ Problems: Merge two sorted Linked Lists, detect cycle in LL, remove Nth
node from end. (Medium)
● Wednesday:
○ Concept: Stacks - LIFO principle, array vs. linked list implementation, basic
operations (push, pop, peek).
○ Problems: Valid Parentheses, Implement Queue using Stacks.
(Easy/Medium)
● Thursday:
○ Concept: Stacks - Monotonic Stack for next greater/smaller element.
○ Problems: Next Greater Element, Largest Rectangle in Histogram
(conceptual hard). (Medium/Hard)
● Friday:
○ Concept: Stacks - Application in expression evaluation.
○ Problems: Evaluate Reverse Polish Notation, Basic Calculator (conceptual).
(Medium/Hard)
○ Weekly Review: Ensure strong understanding of pointers/references for LL,
and stack applications.
Week 4: Queues & Recursion/Backtracking (Intermediate)
● Monday:
○ Concept: Queues - FIFO principle, array vs. linked list implementation, basic
operations.
○ Problems: Implement Stack using Queues, BFS introduction for simple grid
problems. (Easy/Medium)
● Tuesday:
○ Concept: Deque (Double-ended Queue), Sliding Window Maximum.
○ Problems: Sliding Window Maximum (using Deque). (Hard)
● Wednesday:
○ Concept: Recursion - Deeper Dive: call stack, recursion tree, memoization
(intro to DP).
○ Problems: Tower of Hanoi, all permutations of a string/array (intro to
backtracking). (Medium)
● Thursday:
○ Concept: Backtracking - N-Queens problem, Combination Sum.
○ Problems: Subsets, generate parentheses. (Medium)
● Friday:
○ Concept: Backtracking - Rat in a Maze, Sudoku Solver.
○ Problems: Word Search. (Medium/Hard)
○ Weekly Review: Focus on designing recursive functions, identifying base
cases, and avoiding redundant calculations.
Week 5: Trees (Part 1)
● Monday:
○ Concept: Trees - Terminology (root, node, leaf, depth, height), Binary Tree
properties.
○ Problems: Implement a Binary Tree node, basic tree creation. (Easy)
● Tuesday:
○ Concept: Tree Traversals - Inorder, Preorder, Postorder (Recursive).
○ Problems: Implement all 3 traversals. (Easy)
● Wednesday:
○ Concept: Tree Traversals - Level Order Traversal (BFS for trees).
○ Problems: Level Order Traversal, maximum depth of binary tree.
(Easy/Medium)
● Thursday:
○ Concept: Binary Search Trees (BST) - Properties, Insertion, Deletion.
○ Problems: Validate BST, Search in BST. (Medium)
● Friday:
○ Concept: BST - LCA in BST, convert sorted array to BST.
○ Problems: Kth smallest element in BST. (Medium)
○ Weekly Review: Strong focus on tree recursion and understanding BST
properties.
Week 6: Trees (Part 2) & Heaps
● Monday:
○ Concept: Advanced Tree Problems - Symmetric Tree, Invert Binary Tree.
○ Problems: Path Sum, Diameter of Binary Tree. (Medium)
● Tuesday:
○ Concept: Balanced Trees (AVL, Red-Black - conceptual understanding, not
implementation).
○ Problems: Count good nodes in Binary Tree. (Medium)
● Wednesday:
○ Concept: Heaps - Min Heap, Max Heap properties, heapify process, building
a heap.
○ Problems: Implement Min Heap, implement Max Heap. (Medium)
● Thursday:
○ Concept: Priority Queue (often implemented using Heaps), Heap Sort
(conceptual).
○ Problems: Kth largest element in an array (using min-heap), Top K Frequent
Elements. (Medium/Hard)
● Friday:
○ Concept: Heaps - More applications.
○ Problems: Merge K sorted lists (using min-heap). (Hard)
○ Weekly Review: Understand when to use heaps vs. other data structures.
Week 7: Graphs (Part 1)
● Monday:
○ Concept: Graphs - Terminology (vertex, edge, degree, path, cycle),
Directed/Undirected, Weighted/Unweighted.
○ Problems: Graph Representation (Adjacency Matrix vs. Adjacency List).
(Easy)
● Tuesday:
○ Concept: Graph Traversal - Breadth-First Search (BFS) on Graphs.
○ Problems: BFS traversal, Find if path exists. (Medium)
● Wednesday:
○ Concept: Graph Traversal - Depth-First Search (DFS) on Graphs.
○ Problems: DFS traversal, Number of Islands, Cycle Detection (undirected
graph). (Medium)
● Thursday:
○ Concept: Topological Sort (for Directed Acyclic Graphs - DAGs).
○ Problems: Course Schedule. (Medium/Hard)
● Friday:
○ Concept: Detecting Cycles in Directed Graphs (using DFS).
○ Problems: Clone Graph. (Medium/Hard)
○ Weekly Review: Crucial week for graph basics. Practice drawing graphs and
traversals.
Week 8: Graphs (Part 2) & Greedy Algorithms
● Monday:
○ Concept: Shortest Path Algorithms - Dijkstra's Algorithm (for non-negative
weights).
○ Problems: Dijkstra's implementation, network delay time. (Hard)
● Tuesday:
○ Concept: Minimum Spanning Trees (MST) - Prim's Algorithm.
○ Problems: Connecting Cities With Minimum Cost. (Hard)
● Wednesday:
○ Concept: Greedy Algorithms - Introduction, when to use greedy.
○ Problems: Activity Selection, Coin Change (greedy approach where
applicable), N meetings in one room. (Medium)
● Thursday:
○ Concept: Greedy Algorithms - More problems.
○ Problems: Fractional Knapsack, Jump Game. (Medium)
● Friday:
○ Concept: Greedy Algorithm limitations.
○ Problems: Gas Station. (Medium/Hard)
○ Weekly Review: Understand the greedy choice property and optimal
substructure for greedy problems.
Week 9: Dynamic Programming (DP)
● Monday:
○ Concept: Dynamic Programming - Introduction, identifying overlapping
subproblems and optimal substructure. Memoization (top-down) vs.
Tabulation (bottom-up).
○ Problems: Fibonacci sequence (DP approach), Climbing Stairs.
(Easy/Medium)
● Tuesday:
○ Concept: DP - 1D DP problems.
○ Problems: House Robber, Maximum Subarray. (Medium)
● Wednesday:
○ Concept: DP - 2D DP problems.
○ Problems: Longest Common Subsequence (LCS), Unique Paths.
(Medium/Hard)
● Thursday:
○ Concept: DP - Knapsack Problem (0/1 Knapsack), Bounded Knapsack.
○ Problems: 0/1 Knapsack. (Hard)
● Friday:
○ Concept: DP - More advanced patterns (e.g., subset sum, coin change
problem - DP).
○ Problems: Coin Change (DP), Word Break. (Hard)
○ Weekly Review: This is usually the hardest topic. Focus on recognizing DP
patterns.
Week 10: Revision & Mock Interviews
● Monday:
○ Revision: Comprehensive review of Arrays, Strings, Linked Lists, Stacks,
Queues. Solve 3-4 mixed medium problems from these topics.
○ Concept: Practice problem recognition.
● Tuesday:
○ Revision: Comprehensive review of Trees, Heaps, Graphs. Solve 3-4 mixed
medium/hard problems from these topics.
○ Concept: Practice problem recognition.
● Wednesday:
○ Revision: Comprehensive review of Recursion, Backtracking, Greedy, DP.
Solve 3-4 mixed medium/hard problems.
○ Mock Interview 1: (Optional, but highly recommended) Find a peer or use an
online platform for a mock interview.
● Thursday:
○ Mixed Problem Solving: Solve 5-6 random problems across all topics (mix
of easy/medium/hard). Focus on speed and accuracy.
○ Mock Interview 2: (Optional) Another mock interview, focusing on areas
identified as weak from Mock 1.
● Friday:
○ Final Review: Go through your personal list of commonly botched problems.
Review common interview questions (e.g., "Tell me about yourself," "Why this
company?").
○ Strategy: Discuss problem-solving strategy, communication skills, and
whiteboard coding.
○ Relax: Take it easy, trust your preparation!