How to Practice Algorithms for Interviews: A LeetCode Strategy
Practice4 minInnovialabs editorial team
In short
Solve problems by pattern, not at random: learn the pattern's idea, do 5-10 problems on it, keep an error log and revisit unsolved ones after a few days; the goal is recognizing patterns, not remembering answers.
The short answer
Effective preparation for algorithm interviews is practice by patterns, not solving random problems one after another. Most interview problems boil down to a limited set of techniques. The goal is to recognize which technique fits within a couple of minutes and implement it confidently while explaining your reasoning out loud.
Core patterns and the order to learn them
Go from simple to complex: each pattern builds on the previous ones.
| Pattern | When to use | Typical hints in the problem |
|---|---|---|
| Hash map | Fast lookup, counting | "find a pair", "contains duplicate" |
| Two pointers | Sorted arrays, strings | "pair with sum", "palindrome" |
| Sliding window | Subarray or substring | "longest substring with a condition" |
| Binary search | Monotonic property | "minimum value such that…" |
| Stack | Nesting, nearest greater element | "parentheses", "next greater" |
| BFS / DFS | Graphs, trees, grids | "shortest path", "islands", "tree traversal" |
| Backtracking | Enumerating options | "all permutations", "all subsets" |
| Heap | Top-K, merging | "k largest", "median of a stream" |
| Dynamic programming | Overlapping subproblems | "number of ways", "minimum cost" |
What practicing one pattern looks like
- Understand the idea. Read an explanation and one reference problem. Understand why it works and its complexity.
- Write the template in your own words. Do not copy it — reconstruct it from memory.
- Solve 5-10 problems of increasing difficulty: easy first, then medium.
- Mix it up. After a few patterns, solve problems without knowing the topic — this trains the key skill of recognizing the pattern.
A sliding window template for the longest substring without repeating characters:
def longest_unique(s: str) -> int:
last = {}
left = best = 0
for right, ch in enumerate(s):
if ch in last and last[ch] >= left:
left = last[ch] + 1
last[ch] = right
best = max(best, right - left + 1)
return best
How many problems are enough
There is no universal number. Use a readiness test instead of a counter:
- you recognize the pattern in a new medium problem within a few minutes;
- you solve a typical medium problem within interview time;
- you can explain time and space complexity;
- you can talk through the solution without losing the thread.
A hundred well-reviewed problems organized by pattern are usually worth more than several hundred rushed ones. If you target companies with a strong algorithmic bar, you need more medium problems and some hard ones.
How to review solutions
After each problem, solved or not, spend a few minutes reviewing:
- Which pattern? Write it down in words.
- Where did you get stuck? Did not see the pattern, edge cases, complexity too high.
- Other solutions. Look at 1-2 top solutions and find an idea you did not have.
- Rewrite it yourself. A day later, solve it again without hints.
If you have been stuck for more than 20-30 minutes, look at a hint or the solution — sitting longer stops teaching you anything.
A weak-spot log
Keep a simple table: problem, pattern, result (solo / with hint / unsolved), reason for the mistake, review date. After a couple of weeks you will see which topics are weak — that is where to shift your focus.
Revisit unsolved problems after 3 days and after a week. Spaced repetition locks in a technique better than new problems on the same topic.
How not to slide into memorization
- Solution in words first, code second. If you cannot explain the idea, you memorized the code rather than understood it.
- Change the conditions. Ask yourself: what if the array is not sorted? What if all answers are needed, not one?
- Write without autocomplete for some problems — you may not have it in the interview.
- Practice out loud. Mock interviews with a friend or talking to yourself reveal gaps that silent solving hides.
- Do not chase the counter. The number of solved problems on your profile tells the interviewer nothing.