If we are dealing with top/maximum/minimum/closest 'K' elements among 'N' elements, we will be using a Heap.
If the given input is a sorted array or a list, we will either be using Binary Search or the Two Pointers strategy.
If we need to try all combinations (or permutations) of the input, we can either use Backtracking or Breadth First Search.
Most of the questions related to Trees or Graphs can be solved either through Breadth First Search or Depth First Search.
Every recursive solution can be converted to an iterative solution using a Stack.
For a problem involving arrays, if there exists a solution in O(n^2) time and O(1) space, there must exist two other solutions:
(1) Using a HashMap or a Set for O(n) time and O(n) space.
(2) Using sorting for O(n log n) time and O(1) space.If a problem is asking for optimization (e.g., maximization or minimization), we will be using Dynamic Programming.
If we need to find some common substring among a set of strings, we will be using a HashMap or a Trie.
If we need to search/manipulate a bunch of strings, Trie will be the best data structure.
If the problem is related to a LinkedList and we can't use extra space, then use the Fast & Slow Pointer approach.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)