🔁Two Pointers
Used on sorted arrays/strings. Efficient for pair sums, reversing, removing duplicates.
Examples: Two Sum (sorted), 3Sum, Container With Most Water
🪟Sliding Window
Used for substrings or subarrays with length, sum, or frequency constraints.
Examples: Max Sum Subarray, Longest Substring Without Repeating Characters
🐢Fast & Slow Pointers
Great for detecting cycles or finding midpoints.
Examples: Linked List Cycle, Happy Number
📦Hashing (Map/Set)
Quick lookups, frequency counts, avoiding duplicates.
Examples: Two Sum, Group Anagrams, Longest Consecutive Sequence
🧮Prefix Sum
Efficient range sum and updates.
Examples: Range Sum Query, Subarray Sum Equals K
🔍Binary Search
Used on sorted arrays or monotonic functions.
Examples: Binary Search, Koko Eating Bananas, Rotated Sorted Array
🌲DFS & BFS
Used in trees and graphs for traversal or shortest path.
Examples: Number of Islands, Word Ladder, Graph Traversal
🧩Backtracking
Used for exploring all combinations/permutations.
Examples: N-Queens, Word Search, Subsets
📈Dynamic Programming
Used for optimal substructure and overlapping subproblems.
Examples: Climbing Stairs, 0/1 Knapsack, Longest Common Subsequence
⚡Greedy Algorithms
Make locally optimal choices aiming for a global optimum.
Examples: Jump Game, Activity Selection, Gas Station
🔗Union-Find
Used for grouping elements and detecting cycles.
Examples: Accounts Merge, Connected Components, Redundant Connection
📊Heap/Priority Queue
Used to access largest or smallest element quickly.
Examples: Kth Largest Element, Median Finder, Task Scheduler