130 lines
4.3 KiB
YAML
130 lines
4.3 KiB
YAML
patterns:
|
|
- name: Two Pointers
|
|
slug: two-pointers
|
|
description: Use two pointers to traverse data from different positions, often moving toward or away from each other.
|
|
when_to_use: |
|
|
- Sorted arrays where you need to find pairs
|
|
- Linked list cycle detection
|
|
- Removing duplicates in-place
|
|
- Partitioning arrays
|
|
- Palindrome checking
|
|
|
|
- name: Sliding Window
|
|
slug: sliding-window
|
|
description: Maintain a window of elements that slides through the data, tracking a constraint or computing aggregates.
|
|
when_to_use: |
|
|
- Finding subarrays/substrings with specific properties
|
|
- Maximum/minimum sum of fixed-size windows
|
|
- Longest substring with at most K distinct characters
|
|
- Problems mentioning "contiguous" elements
|
|
|
|
- name: Fast & Slow Pointers
|
|
slug: fast-slow-pointers
|
|
description: Two pointers moving at different speeds, commonly used for cycle detection.
|
|
when_to_use: |
|
|
- Detecting cycles in linked lists or arrays
|
|
- Finding the middle of a linked list
|
|
- Finding the start of a cycle
|
|
- Happy number problem
|
|
|
|
- name: Binary Search
|
|
slug: binary-search
|
|
description: Efficiently search sorted data by repeatedly dividing the search space in half.
|
|
when_to_use: |
|
|
- Sorted arrays or search spaces
|
|
- Finding boundaries (first/last occurrence)
|
|
- Searching in rotated sorted arrays
|
|
- Finding peak elements
|
|
- Minimizing/maximizing with monotonic constraints
|
|
|
|
- name: BFS (Breadth-First Search)
|
|
slug: bfs
|
|
description: Level-by-level traversal using a queue, optimal for shortest paths in unweighted graphs.
|
|
when_to_use: |
|
|
- Shortest path in unweighted graphs
|
|
- Level-order tree traversal
|
|
- Finding all nodes at distance K
|
|
- Word ladder problems
|
|
- Matrix traversal
|
|
|
|
- name: DFS (Depth-First Search)
|
|
slug: dfs
|
|
description: Explore as deep as possible before backtracking, using recursion or a stack.
|
|
when_to_use: |
|
|
- Tree/graph traversal
|
|
- Path finding
|
|
- Detecting cycles
|
|
- Topological sorting
|
|
- Connected components
|
|
- Backtracking problems
|
|
|
|
- name: Backtracking
|
|
slug: backtracking
|
|
description: Build solutions incrementally, abandoning paths that fail to satisfy constraints.
|
|
when_to_use: |
|
|
- Generating all permutations/combinations
|
|
- Sudoku solver
|
|
- N-Queens problem
|
|
- Subset/partition problems
|
|
- Word search in grid
|
|
|
|
- name: Dynamic Programming
|
|
slug: dynamic-programming
|
|
description: Break problems into overlapping subproblems, storing results to avoid recomputation.
|
|
when_to_use: |
|
|
- Optimization problems (min/max)
|
|
- Counting problems
|
|
- Problems with optimal substructure
|
|
- Sequence alignment
|
|
- Knapsack-type problems
|
|
|
|
- name: Greedy
|
|
slug: greedy
|
|
description: Make locally optimal choices at each step, hoping for a global optimum.
|
|
when_to_use: |
|
|
- Interval scheduling
|
|
- Huffman coding
|
|
- Minimum spanning tree
|
|
- Activity selection
|
|
- When local optimum leads to global optimum
|
|
|
|
- name: Monotonic Stack
|
|
slug: monotonic-stack
|
|
description: Stack maintaining elements in sorted order, used for next greater/smaller element problems.
|
|
when_to_use: |
|
|
- Next greater/smaller element
|
|
- Largest rectangle in histogram
|
|
- Daily temperatures
|
|
- Stock span problem
|
|
- Trapping rain water
|
|
|
|
- name: Heap / Priority Queue
|
|
slug: heap
|
|
description: Data structure for efficiently finding min/max elements.
|
|
when_to_use: |
|
|
- Top K elements
|
|
- K-way merge
|
|
- Median from data stream
|
|
- Task scheduling
|
|
- Dijkstra's algorithm
|
|
|
|
- name: Union Find
|
|
slug: union-find
|
|
description: Track disjoint sets with efficient union and find operations.
|
|
when_to_use: |
|
|
- Connected components in graphs
|
|
- Cycle detection in undirected graphs
|
|
- Kruskal's minimum spanning tree
|
|
- Social network connections
|
|
- Accounts merge
|
|
|
|
- name: Trie
|
|
slug: trie
|
|
description: Tree-like data structure for efficient string prefix operations.
|
|
when_to_use: |
|
|
- Autocomplete systems
|
|
- Word dictionary with wildcard search
|
|
- Longest common prefix
|
|
- Word break problems
|
|
- Spell checker
|