Common problem solving techniques.
For more follow me on LinkedIn
Pattern Description Author/Channel
Brute Force Solve the problem through exhaustive search, considering all possible solutions. frbjava
Two Pointers Use two pointers to traverse a data structure efficiently. frbjava
Sliding Window Maintain a subset (window) of elements while iterating through a data structure. frbjava
Break the problem into subproblems, solve them independently, and combine their
Divide and Conquer frbjava
solutions.
Greedy Algorithms Make locally optimal choices at each step to find a global optimum. frbjava
Dynamic Programming Solve problems by breaking them into smaller overlapping subproblems. frbjava
Backtracking Explore all possible solutions by making choices and backtracking when necessary. frbjava
Depth-First Search (DFS) Explore as far as possible along each branch before backtracking. frbjava
Breadth-First Search
Explore all neighbors of a node before moving on to the next level of nodes. frbjava
(BFS)
Binary Search Efficiently find a specific value in a sorted data structure. frbjava
Topological Sorting Arrange the nodes of a directed acyclic graph in a linear order. frbjava
Union-Find Maintain disjoint sets and efficiently perform union and find operations. frbjava
Bit Manipulation Manipulate individual bits to solve problems efficiently. frbjava
Hashing Use hash functions to map data to a fixed-size array. frbjava
Trie (Prefix Tree) Efficiently store and retrieve a dynamic set of strings. frbjava
Heap (Priority Queue) Maintain a partially ordered data structure for efficient retrieval and updates. frbjava
Graph Algorithms Solve problems related to graphs using traversal and specific graph algorithms. frbjava