THE ULTIMATE DSA GUIDE
Data Structure Specific Algorithms
1. Arrays
● Sorting:
○ Quicksort: Efficient average case time complexity (O(n \log n)).
○ Mergesort: O(n \log n) useful when order of elements matter.
○ Heapsort: (O(n \log n)).
● Searching:
○ Binary Search: Fast search in sorted arrays (O(\log n)).
● Two Pointers:
○ In-place manipulation: sum for sorted array (removing duplicates).
● Sliding Window:
○ Subarray problems: finding maximum/minimum within a window.
2. Linked Lists
● Traversal:
○ Iterate through the list, understand the node structure.
● Insertion/Deletion:
○ At beginning, end, or at a specific position.
● Reversal:
○ In-place reversal, recursive and iterative approaches.
● Cycle Detection:
○ Floyd's Tortoise and Hare algorithm.
3. Hash Tables (Hash Maps/Sets)
● Implementation not needed, just understand following:
○ Understand how hash functions work.
○ Average O(1) time lookup.
○ Collision Handling.
4. Trees (Binary Trees, Binary Search Trees)
● Traversal:
○ Inorder, Preorder, Postorder (recursive and iterative).
● Searching:
○ Find a node with a given value (especially in BSTs).
5. Stacks
● Implementation not needed, just understand following:
○ Push/Pop/Peek Operations.
6. Queues
● Implementation not needed, just understand following:
○ Enqueue/Dequeue Operations.
7. Heaps (Priority Queues)
● Implementation not needed, just understand following:
○ Insertion/Deletion (extract: min/max)
○ Building a heap
○ Applications:
■ Using a heap to find k largest/smallest elements.
8. Graphs
● Traversal:
○ Breadth-First Search (BFS)
○ Depth-First Search (DFS)
● Shortest Path:
○ Dijkstra's Algorithm.
● Cycle Detection:
○ DFS.
9. Tries
● Implementation from scratch
● Insertion/searching:
○ Prefix-based operations
○ Autocompletion:
■ Used for word suggestions
10. Union-Find (Disjoint Set)
● Implementation from scratch
● Union/Find operations
● Applications: un-directed graphs
● Cycle detection in un-directed graphs
General Algorithms/Techniques
1. Recursion
● Defining a problem in terms of itself, often used for tree/graph traversals, factorials,
Fibonacci.
● Common applications: tree traversals, depth-first search.
2. Dynamic Programming
● Breaking down a problem into overlapping subproblems and optimal substructure, using
memoization.
● Common problems: Fibonacci sequence, knapsack problem, longest common
subsequence.
3. Greedy Algorithms
● Making locally optimal choices at each step with the hope of finding a global optimum.
● Common problems: coin change, activity selection, Dijkstra's algorithm for minimum
spanning trees.
4. Backtracking
● Incrementally building solutions, exploring all possibilities, and undoing choices (pruces).
● Common problems: Sudoku solver, N-Queens problem, permutation, combination.