Skip to content

Instantly share code, notes, and snippets.

@iklobato
Last active January 15, 2024 21:46
Show Gist options
  • Save iklobato/b9fc4128ebc8391429e7bbe72527559c to your computer and use it in GitHub Desktop.
Save iklobato/b9fc4128ebc8391429e7bbe72527559c to your computer and use it in GitHub Desktop.
Comprehensive 30-Day Algorithm Study Plan for Coding Interviews

INTERVIEWS

Comprehensive 30-Day Algorithm Study Plan for Coding Interviews

Based on: https://www.hackerrank.com/interview/interview-preparation-kit

This 30-day study plan is meticulously crafted to help you achieve a comprehensive understanding of fundamental algorithmic concepts, strategically tailored for success in coding interviews. The primary goal of this plan is to equip you with the skills and knowledge required to confidently tackle algorithmic challenges commonly encountered during technical interviews.

The plan kicks off with a warm-up phase, allowing you to familiarize yourself with the HackerRank environment and ease into problem-solving. As you progress through each day, the plan systematically delves into key algorithmic topics, offering a detailed breakdown of subtopics for a more thorough exploration.

Days 1-5: Warm-up Challenges (0/5)

  • Familiarize yourself with the HackerRank environment.
  • Solve easy warm-up challenges to get accustomed to problem-solving.

Days 6-10: Arrays (0/5)

  • Most Important Topic: Array manipulation and searching.
    • Subtopics:
      • Basic array operations (insertion, deletion, and retrieval).
      • Searching algorithms (linear search, binary search).
      • Array rotation and reversal.
      • Subarray problems (finding maximum sum, longest increasing subarray).
      • Two-pointer technique.

Days 11-15: Dictionaries and Hashmaps (0/5)

  • Most Important Topic: Understanding key-value pairs and hash functions.
    • Subtopics:
      • Basic dictionary operations (insertion, deletion, and retrieval).
      • Hashmap implementation and collision resolution.
      • Solving problems involving frequency mapping.
      • Implementing custom hash functions.
      • Using hashmaps for efficient problem-solving.

Days 16-20: Sorting (0/5)

  • Most Important Topic: Different sorting algorithms (e.g., quicksort, mergesort).
    • Subtopics:
      • Bubble sort, selection sort, and insertion sort.
      • QuickSort and MergeSort implementation and analysis.
      • Sorting applications and variations.
      • Time and space complexity analysis for sorting algorithms.
      • External sorting algorithms.

Days 21-25: String Manipulation (0/5)

  • Most Important Topic: String handling, manipulation, and pattern matching.
    • Subtopics:
      • String concatenation, substring, and reversing.
      • Anagram and palindrome detection.
      • Regular expressions and pattern matching.
      • String compression and decompression.
      • Levenshtein distance and edit distance.

Days 26-30: Greedy Algorithms (0/7)

  • Most Important Topic: Greedy choice property and optimization problems.
    • Subtopics:
      • Fractional knapsack problem.
      • Huffman coding.
      • Activity selection problem.
      • Greedy algorithms for scheduling.
      • Coin change problem.
      • Minimum spanning tree algorithms (Prim's and Kruskal's).

Days 31-35: Search (0/4)

  • Most Important Topic: Binary search and other searching techniques.
    • Subtopics:
      • Binary search in rotated arrays.
      • Searching in 2D arrays.
      • Interpolation search and exponential search.
      • Depth-First Search (DFS) and Breadth-First Search (BFS).
      • A* search algorithm.

Days 36-40: Dynamic Programming (0/6)

  • Most Important Topic: Overlapping subproblems and optimal substructure.
    • Subtopics:
      • Fibonacci sequence using dynamic programming.
      • Longest Common Subsequence (LCS).
      • Knapsack problem.
      • Dynamic programming on trees.
      • Matrix chain multiplication.
      • Longest Increasing Subsequence (LIS).

Days 41-45: Stacks and Queues (0/9)

  • Most Important Topic: Implementing stacks and queues, and their applications.
    • Subtopics:
      • Stack and queue operations.
      • Implementing a stack using arrays and linked lists.
      • Applications of stacks and queues.
      • Designing a stack that supports push, pop, top, and retrieving the minimum element.
      • Implementing a queue using stacks.
      • Binary trees, queues, stacks, linked lists.
      • Binary trees (contd.): Binary tree operations (insertion, deletion, and traversal).

Days 46-50: Graphs (0/5)

  • Most Important Topic: Graph traversal algorithms (DFS, BFS).
    • Subtopics:
      • Graph representation (adjacency matrix, adjacency list).
      • Depth-First Search (DFS) and its applications.
      • Breadth-First Search (BFS) and its applications.
      • Detecting cycles in a graph.
      • Dijkstra's algorithm for shortest paths.

Days 51-55: Trees (0/6)

  • Most Important Topic: Binary trees, tree traversal, and binary search trees.
    • Subtopics:
      • Tree traversal algorithms (preorder, inorder, postorder).
      • Binary search tree properties and operations.
      • Balanced binary search trees (AVL trees).
      • Heap data structure and heap operations.
      • Binary trees (contd.): Handling binary tree operations.

Days 56-60: Linked Lists (0/5)

  • Most Important Topic: Singly and doubly linked lists, insertion, deletion, and traversal.
    • Subtopics:
      • Singly linked list operations.
      • Doubly linked list operations.
      • Detecting cycles in linked lists.
      • Merging two sorted linked lists.
      • Circular linked lists.

Days 61-65: Recursion and Backtracking (0/4)

  • Most Important Topic: Understanding recursion, recursive algorithms, and backtracking.
    • Subtopics:
      • Recursive vs. iterative solutions.
      • Backtracking basics and applications.
      • N-Queens problem.
      • Subset and permutation problems.

Days 66-70: Miscellaneous (0/5)

  • Most Important Topic: Cover any remaining topics and review.
    • Subtopics:
      • Time and space complexity analysis.
      • Bit manipulation.
      • Divide and conquer.
      • Design patterns and coding best practices.
      • Handling edge cases and error handling.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment