60-Day DSA Roadmap
This 60-day roadmap is designed to guide you through learning Data Structures and
Algorithms (DSA) from scratch. Each day is structured with specific topics and resources to
ensure steady progress.
Day 1: Choose a Programming Language
Choose a programming language you're comfortable with or one that's widely used for DSA.
Popular options include:
- C++ (Great for competitive programming)
- Python (Beginner-friendly and versatile)
- Java (Widely used and object-oriented)
Week 1: Basics and Complexity Analysis
Day 2-3: Learn basic syntax of your chosen language.
Day 4-5: Understand time complexity (Big O notation).
Day 6-7: Practice basic algorithms like linear and binary search.
Week 2: Arrays
Day 8-9: Learn about arrays and solve basic problems (max/min, reverse an array).
Day 10-11: Study the two-pointer technique and solve pair sum problems.
Day 12-14: Learn the sliding window technique and solve subarray problems.
Week 3: Strings
Day 15-16: Practice basic string manipulations (palindrome check, frequency count).
Day 17-18: Learn pattern matching algorithms like KMP.
Day 19-21: Solve advanced string problems (longest substring, string compression).
Week 4: Searching and Sorting
Day 22-23: Master binary search and its variations.
Day 24-25: Learn QuickSort, MergeSort, and HeapSort.
Day 26-28: Solve problems like Kth largest element and median of two sorted arrays.
Week 5: Linked Lists
Day 29-30: Learn singly linked lists (insert, delete, traverse).
Day 31-32: Practice reversing a linked list and detecting cycles.
Day 33-35: Solve advanced problems like merging sorted linked lists.
Week 6: Stacks and Queues
Day 36-37: Understand stack operations and solve problems like valid parentheses.
Day 38-39: Learn about queues (normal, circular, deque).
Day 40-42: Solve problems like sliding window maximum and stack using queues.
Week 7: Trees
Day 43-44: Learn binary tree traversal (inorder, preorder, postorder).
Day 45-46: Study Binary Search Trees (BST) and operations.
Day 47-48: Solve tree problems like height calculation and lowest common ancestor.
Week 8: Heaps and Hashing
Day 49-50: Learn heaps and priority queues. Solve Kth largest element.
Day 51-52: Understand hashing concepts and solve problems like two-sum.
Week 9: Graphs
Day 53-54: Learn graph representations (adjacency matrix, list).
Day 55-56: Practice BFS and DFS traversals.
Day 57-58: Solve graph problems like cycle detection and shortest paths.
Week 10: Dynamic Programming
Day 59: Understand the basics of dynamic programming (tabulation vs. memoization).
Day 60: Solve beginner DP problems (Fibonacci, 0/1 Knapsack).